การคำนวณวันที่ในอนาคตหรืออดีต

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) สามารถทำให้ปัญหาเกิดขึ้น

ดูเพิ่มเติม