Elm:
การคำนวณวันที่ในอนาคตหรืออดีต
วิธีการ:
โมดูล Time
ของ Elm และแพ็คเกจ justinmimbs/time-extra
ช่วยให้เราจัดการกับวันที่ได้ง่ายๆ
import Time exposing (Posix)
import Time.Extra as TimeExtra
--calculateDate : Int -> Posix -> Posix
-- @deltaDays: จำนวนวันที่จะเพิ่ม (ใช้เครื่องหมายลบเพื่อลด)
-- @fromDate: วันที่เริ่มต้นในรูปแบบ Posix
calculateDate deltaDays fromDate =
TimeExtra.add TimeExtra.days deltaDays fromDate
-- การใช้งาน
-- อย่าลืมว่า Elm นับเวลาเป็นมิลลิวินาทีนับตั้งแต่ยุค Unix
sampleDate = Time.millisToPosix 1580515200000 -- 1 กุมภาพันธ์ 2020 00:00:00 UTC
futureDate = calculateDate 10 sampleDate -- เพิ่ม 10 วัน
pastDate = calculateDate -15 sampleDate -- ลด 15 วัน
-- ตัวอย่างผลลัพธ์:
-- futureDate -> 1581552000000 -- 12 กุมภาพันธ์ 2020 00:00:00 UTC
-- pastDate -> 1580006400000 -- 17 มกราคม 2020 00:00:00 UTC
ข้อมูลเพิ่มเติม
ก่อนหน้านี้ การจัดการวันที่ในการเขียนโปรแกรมเป็นเรื่องยาก ระบบต่างๆ, รูปแบบ, และเขตเวลาที่แตกต่างกันสร้างความปวดหัวให้กับทุกคน โมดูล Time
ของ Elm ที่อิงตามระบบ Unix Time (มิลลิวินาทีนับตั้งแต่ปี 1970) ทำให้มาตรฐานนี้ แพ็คเกจ justinmimbs/time-extra
แสดงถึงการทำให้การจัดการ operations ต่างๆ เกี่ยวกับวันที่ เช่น การเพิ่มหรือลบวัน ง่ายขึ้น
ทางเลือกอื่น? ภาษาการเขียนโปรแกรมอื่นๆ มีไลบรารีของตัวเอง เช่น datetime
ของ Python หรือ Date
ของ JavaScript แต่วิธีการของ Elm นำเสนอการพิมพ์ที่แข็งแรงและความบริสุทธิ์ ช่วยลดข้อผิดพลาด
นอกจากการเพิ่มวันแล้ว คุณยังสามารถทำงานกับเดือน, ปี, หรือแม้กระทั่งชั่วโมงและนาที ฟังก์ชันใน Elm และในแพ็คเกจเช่น time-extra
มุ่งเน้นไปที่ความไม่เปลี่ยนแปลงและฟังก์ชันบริสุทธิ์—นั้นหมายความว่าไม่มีผลข้างเคียง คุณคิดคำนวณวันที่ใหม่ ได้โดยที่วันที่เดิมยังคงไม่เปลี่ยนแปลง
ดูเพิ่มเติม
- โมดูล
Time
ของ Elm: https://package.elm-lang.org/packages/elm/time/latest/ - แพ็คเกจ
justinmimbs/time-extra
: https://package.elm-lang.org/packages/justinmimbs/time-extra/latest/ - คู่มือ Elm เกี่ยวกับเวลา: https://guide.elm-lang.org/effects/time.html