Clojure:
การแปลงวันที่เป็นสตริง
วิธีการ:
ใน Clojure เราใช้ความสามารถของการใช้งาน Java ร่วมกันเพื่อจัดรูปแบบวันที่ นี่คือคู่มืออย่างรวดเร็ว:
(import java.text.SimpleDateFormat)
(import java.util.Date)
;; สร้างวัตถุวันที่ (ใช้วันที่และเวลาปัจจุบัน)
(def now (Date.))
;; ตั้งค่ารูปแบบที่ต้องการ
(def formatter (SimpleDateFormat. "yyyy-MM-dd HH:mm:ss"))
;; จัดรูปแบบวันที่เป็นสตริง
(def formatted-date (.format formatter now))
;; พิมพ์ออกมา
(println formatted-date)
;; ผลลัพธ์อาจเป็น: "2023-03-15 09:26:45" (ขึ้นอยู่กับวันที่และเวลาปัจจุบัน)
การศึกษาลึก
การแปลงวันที่เป็นสตริงไม่ได้จำกัดอยู่กับ Clojure เท่านั้น มันเป็นการดำเนินการทั่วไปในภาษาโปรแกรมหลายภาษา ในอดีตความต้องการนี้เกิดขึ้นเมื่อคอมพิวเตอร์เริ่มจัดการกับวันที่เพราะการมีตัวแทนที่มนุษย์สามารถอ่านได้ทำให้เข้าใจและสื่อสารได้ง่ายขึ้น ในขณะที่เครื่องจักรชอบรูปแบบข้อมูลที่มีโครงสร้างมากกว่า
ใน Clojure เพราะว่ามันทำงานบน Java Virtual Machine (JVM) เรามักใช้ไลบรารีวันที่และเวลาของ Java เช่น java.util.Date
และ java.text.SimpleDateFormat
แม้ว่าคลาสเหล่านี้จะมีมานานแล้ว แต่กระบวนการใหม่ java.time
ที่ถูกนำมาใช้ใน Java 8 นั้นเป็นทางเลือกที่ดีขึ้นด้วยความปลอดภัยสำหรับเธรดและ API ที่ใช้งานง่ายกว่า
Clojure ไม่มีไลบรารีการจัดรูปแบบวันที่ที่เป็นส่วนหนึ่งของภาษาหลัก ดังนั้นมันจึงเป็นเรื่องปกติที่จะใช้การทำงานร่วมกับ Java หรือไลบรารีจากบุคคลที่สาม เช่น clj-time
(เป็น wrapper ของ Joda Time) สำหรับการใช้งาน Clojure ที่ธรรมชาติมากขึ้น
นี่คือวิธีที่คุณอาจใช้ java.time
เพื่อจัดรูปแบบ:
(import java.time.LocalDateTime)
(import java.time.format.DateTimeFormatter)
;; สร้างวัตถุวันที่ (วันที่และเวลาปัจจุบัน)
(def now (LocalDateTime/now))
;; ตั้งค่ารูปแบบที่ต้องการ
(def formatter (DateTimeFormatter/ofPattern "yyyy-MM-dd HH:mm:ss"))
;; จัดรูปแบบวันที่เป็นสตริง
(def formatted-date (.format now formatter))
;; พิมพ์ออกมา
(println formatted-date)
;; ผลลัพธ์คล้ายกับก่อนหน้านี้ ใช่วันที่และเวลาปัจจุบัน
วิธีนี้หลีกเลี่ยงปัญหาเรื่องการเปลี่ยนแปลงที่เกิดขึ้นกับ SimpleDateFormat และควรจะได้รับการพิจารณาในโค้ดใหม่ที่ความปลอดภัยของเธรดเป็นเรื่องสำคัญ
ดูเพิ่มเติม
- คู่มือวันที่และเวลาของ Java 8: https://docs.oracle.com/javase/tutorial/datetime/
- ClojureDocs, คลังเอกสารและตัวอย่างที่ได้รับการสนับสนุนจากชุมชน: https://clojuredocs.org/
- clj-time, ไลบรารีวันที่และเวลาสำหรับ Clojure: https://github.com/clj-time/clj-time