เปรียบเทียบสองวันที่

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, ซึ่งหมายความว่าคุณจะไม่เกิดปัญหาเรื่องการปรับเวลาตามฤดูกาล แต่คุณอาจต้องปรับสำหรับเขตเวลาท้องถิ่นในแอปพลิเคชันของคุณ

ดูเพิ่มเติม