Elm:
เปรียบเทียบสองวันที่
วิธีการ:
Elm ทำให้การเปรียบเทียบวันทีเป็นเรื่องง่าย สมมติว่าคุณมีวันทีสองวัน นี่คือวิธีที่คุณจะตรวจสอบว่าวันทีใดเกิดขึ้นก่อน:
import Time exposing (Posix)
import Date
compareDates : Posix -> Posix -> Order
compareDates date1 date2 =
if date1 < date2 then
LT -- date1 เกิดขึ้นก่อน date2
else if date1 > date2 then
GT -- date1 เกิดขึ้นหลัง date2
else
EQ -- วันที่เหมือนกัน
-- ตัวอย่างการใช้งาน:
let
date1 = Date.fromPosix <| Time.millisToPosix 1650931200000 -- เพิ่มวันที่แรกใน POSIX time
date2 = Date.fromPosix <| Time.millisToPosix 1651017600000 -- และวันที่สองใน POSIX time
in
compareDates date1 date2
-- ผลลัพธ์จะเป็นอย่างใดอย่างหนึ่งระหว่าง LT, GT, หรือ EQ
คุณยังสามารถคำนวณความแตกต่างในหน่วยมิลลิวินาทีได้:
timeDifference : Posix -> Posix -> Time.Duration
timeDifference date1 date2 =
Time.millisToPosix date1 - Time.millisToPosix date2
-- ตัวอย่างการใช้งาน:
let
date1 = Date.fromPosix <| Time.millisToPosix 1650931200000
date2 = Date.fromPosix <| Time.millisToPosix 1651017600000
in
timeDifference date1 date2
-- ผลลัพธ์: ระยะเวลาในหน่วยมิลลิวินาที
ลงลึก
Elm เก็บวันทีในรูปของ Posix
, ซึ่งเป็นการแสดงเวลาเป็นมิลลิวินาทีนับจาก Unix epoch (1 มกราคม 1970, UTC) นี่เป็นวิธีการที่ทั่วไป แบ่งปันรากฐานกับ Unix Time และมันทำให้การจัดการและเก็บข้อมูลวันทีเป็นเรื่องง่าย
แม้ว่าคลังคำสั่งหลักของ Elm จะมีการจัดการวันทีพื้นฐาน บางทางเลือกเช่น justinmimbs/date
มีอยู่สำหรับปฏิบัติการที่ซับซ้อนกว่า
เมื่อทำการเปรียบเทียบวันที จำไว้ว่าเขตเวลาสามารถทำให้เรื่องซับซ้อนขึ้นได้ Elm’s Time
module สมมติว่า UTC, ซึ่งหมายความว่าคุณจะไม่เกิดปัญหาเรื่องการปรับเวลาตามฤดูกาล แต่คุณอาจต้องปรับสำหรับเขตเวลาท้องถิ่นในแอปพลิเคชันของคุณ
ดูเพิ่มเติม
- Elm Time module: https://package.elm-lang.org/packages/elm/time/latest/
- แพคเกจ Date ของ Justin Mimbs สำหรับ Elm: https://package.elm-lang.org/packages/justinmimbs/date/latest/
- Unix Time: https://en.wikipedia.org/wiki/Unix_time