Haskell:
การแปลงวันที่เป็นสตริง
วิธีการ:
ใน Haskell, คุณใช้ฟังก์ชัน formatTime
จากโมดูล Data.Time.Format
สำหรับงานนี้ มาดูโค้ดกันเลย:
import Data.Time
import Data.Time.Format (formatTime, defaultTimeLocale)
main :: IO ()
main = do
-- ดึงเวลาปัจจุบัน
currentTime <- getCurrentTime
let currentZone = utc
-- แปลงเวลา UTC เป็นวัตถุเวลาท้องถิ่น
localTime = utcToLocalTime currentZone currentTime
-- จัดรูปแบบวันที่เป็น "YYYY-MM-DD"
dateString = formatTime defaultTimeLocale "%F" localTime
putStrLn dateString
และนี่คือสิ่งที่คุณอาจเห็นเป็นผลลัพธ์ ขึ้นอยู่กับวันที่ปัจจุบัน:
2023-04-01
ลงลึก
ย้อนกลับไปในยุคแรกๆ ของการเขียนโปรแกรม การแปลงวันที่เป็นสตริงเป็นเรื่องของการใช้งานจริง ใน Haskell, เรามีห้องสมุด Data.Time
เพื่อจัดการกับวันและเวลา ซึ่งได้รับแรงบันดาลใจจากฟังก์ชันและการปรับปรุงเหนือห้องสมุดเก่าๆ เช่น old-time
มีทางเลือกอื่นๆ แก่ formatTime
, เช่นการใช้ show
เพื่อแปลงวันที่เป็นสตริงโดยตรง แต่นี้จะไม่ให้ตัวเลือกการจัดรูปแบบที่เฉพาะเจาะจง ฟังก์ชัน formatTime
เป็นฟังก์ชันที่มีความหลากหลาย สนับสนุนรูปแบบการจัดรูปแบบที่หลากหลายตามแบบฟังก์ชัน strftime
ของภาษา C มันยืดหยุ่นและตระหนักถึงสภาพแวดล้อมท้องถิ่น โดยใช้ defaultTimeLocale
หรือสภาพแวดล้อมท้องถิ่นอื่นๆ เพื่อจัดรูปแบบวันที่ตามธรรมเนียมวัฒนธรรม
เกี่ยวกับการนำไปใช้งาน, ฟังก์ชันใน Data.Time.Format
เป็นฟังก์ชันแบบบริสุทธิ์ หมายความว่าพวกมันไม่อาศัยหรือก่อให้เกิดผลลัพธ์แตกต่างจากปกติ สิ่งนี้สอดคล้องกับจิตวิญญาณการเขียนโปรแกรมแบบฟังก์ชันของ Haskell ซึ่งมุ่งเน้นให้ฟังก์ชันนั้นคาดเดาได้และผลลัพธ์ของพวกมันถูกกำหนดเพียงจากอินพุตของพวกมันเท่านั้น
ดูเพิ่มเติม
สำหรับงานที่กว้างขึ้นเกี่ยวกับวันที่และเวลาใน Haskell, สำรวจสิ่งต่อไปนี้:
- คู่มือโมดูล
Data.Time
: https://hackage.haskell.org/package/time-1.9.3/docs/Data-Time.html - รายละเอียดเกี่ยวกับสตริงรูปแบบ
strftime
, ซึ่งformatTime
เลียนแบบ: http://man7.org/linux/man-pages/man3/strftime.3.html - วิธีการของ Haskell ในการจัดการกับ IO และความบริสุทธิ์: https://www.haskell.org/tutorial/io.html