Tính toán ngày trong tương lai hoặc quá khứ

Clojure:
Tính toán ngày trong tương lai hoặc quá khứ

Cách làm:

Trong Clojure, bạn chủ yếu sử dụng thư viện clj-time cho các thao tác với ngày. Dưới đây là một ví dụ nhanh:

(require '[clj-time.core :as time])
(require '[clj-time.coerce :as coerce])
(require '[clj-time.periodic :as periodic])

;; Thêm 5 ngày vào ngày hiện tại
(let [now (time/now)
      five-days (time/plus now (time/days 5))]
  (str "Năm ngày kể từ bây giờ: " (coerce/to-string five-days)))

;; Trừ 10 ngày từ một ngày cụ thể
(let [specific-date (coerce/to-date-time "2023-03-01T12:00:00.000Z")
      ten-days-ago (time/minus specific-date (time/days 10))]
  (str "Mười ngày trước Ngày 1 tháng 3 năm 2023: " (coerce/to-string ten-days-ago)))

Kết quả mẫu:

"Năm ngày kể từ bây giờ: 2023-03-23T08:00:00.000Z"
"Mười ngày trước Ngày 1 tháng 3 năm 2023: 2023-02-19T12:00:00.000Z"

Tìm hiểu sâu

Trong những ngày đầu, các lập trình viên sử dụng các lớp DateCalendar của Java. Nhưng, phải thừa nhận, chúng khá là phiền phức—dài dòng và dễ mắc lỗi. Thư viện clj-time đã mang lại sự thoải mái, bao bọc API thân thiện hơn với nhà phát triển của Joda-Time.

Có lựa chọn nào khác không? Java 8 đã giới thiệu java.time (JSR-310), được đánh giá khá tốt, nhưng trong lĩnh vực của Clojure, chúng ta vẫn còn ấm áp với clj-time.

Khi tính toán ngày, bạn sử dụng các khoảng thời gian cho các khái niệm như “ngày” và “tháng” và thời lượng cho số lượng mili giây chính xác. Hãy lưu ý về múi giờ—ngày và giờ có thể thay đổi đáng kể tùy thuộc vào luật múi giờ, và giờ tiết kiệm ánh sáng ban ngày (DST) có thể làm gián đoạn công việc của bạn.

Xem thêm