Clojure:
การคำนวณวันที่ในอนาคตหรืออดีต
วิธีการ:
ใน Clojure คุณจะใช้ไลบรารี clj-time
เป็นหลักสำหรับการดำเนินการกับวันที่ นี่คือการแสดงอย่างรวดเร็ว:
(require '[clj-time.core :as time])
(require '[clj-time.coerce :as coerce])
(require '[clj-time.periodic :as periodic])
;; เพิ่ม 5 วันให้กับวันที่ปัจจุบัน
(let [now (time/now)
five-days (time/plus now (time/days 5))]
(str "ห้าวันจากนี้: " (coerce/to-string five-days)))
;; ลบ 10 วันจากวันที่เฉพาะ
(let [specific-date (coerce/to-date-time "2023-03-01T12:00:00.000Z")
ten-days-ago (time/minus specific-date (time/days 10))]
(str "สิบวันก่อนวันที่ 1 มีนาคม 2023: " (coerce/to-string ten-days-ago)))
ตัวอย่างผลลัพธ์:
"ห้าวันจากนี้: 2023-03-23T08:00:00.000Z"
"สิบวันก่อนวันที่ 1 มีนาคม 2023: 2023-02-19T12:00:00.000Z"
ลงลึกมากขึ้น
ในวันแรก ๆ นักพัฒนาใช้คลาส Date
และ Calendar
ของ Java แต่ ถ้าพูดตามตรง พวกเขาทำให้ปวดหัว—ละเอียดและมีโอกาสพลาดมาก เลอไลบรารี clj-time
ได้นำความสบายมา พร้อมกับ API ของ Joda-Time ที่เป็นมิตรกับนักพัฒนามากขึ้น
มีทางเลือกหรือไม่? Java 8 ได้เ introduces java.time
(JSR-310) ซึ่งดีมาก แต่ในย่านของ Clojure เรายังคงอยู่สบายกับ clj-time
เมื่อคำนวณวันที่ คุณใช้ระยะเวลาสำหรับแนวคิดเช่น “วัน” และ “เดือน” และระยะเวลาสำหรับการนับมิลลิวินาทีที่แน่นอน จำไว้ว่า เขตเวลา—วันที่และเวลาสามารถเปลี่ยนแปลงได้อย่างมากขึ้นอยู่กับกฎเขตเวลา และเวลาออมแสง (DST) สามารถทำให้ปัญหาเกิดขึ้น
ดูเพิ่มเติม
- ที่เก็บข้อมูล
clj-time
GitHub: https://github.com/clj-time/clj-time - ที่เก็บข้อมูล
java-time
ของ Clojure: https://github.com/dm3/clojure.java-time