Haskell:
การแยกวันที่ออกจากสตริง
วิธีการ:
ตั้งแต่เริ่มต้น, Haskell มีเครื่องมือพื้นฐานสำหรับการแปลงวันที่, แต่การใช้งานไลบรารี เช่น time
สำหรับฟังก์ชันหลักและ date-parse
หรือ time-parse
สำหรับการแปลงที่ยืดหยุ่นมากขึ้น สามารถลดความยุ่งยากของงานได้อย่างมาก
ก่อนอื่น, ตรวจสอบว่าคุณมีไลบรารี time
พร้อมใช้งาน; มันมักจะถูกรวมอยู่กับ GHC, แต่ถ้าคุณต้องการระบุเป็นการพึ่งพา, เพิ่ม time
ลงในไฟล์ cabal ของโปรเจคหรือใช้ cabal install time
เพื่อการติดตั้งด้วยตัวเอง.
import Data.Time.Format
import Data.Time.Clock
import System.Locale (defaultTimeLocale)
-- การใช้งานไลบรารี time เพื่อแปลงวันที่ในรูปแบบมาตรฐาน
parseBasicDate :: String -> Maybe UTCTime
parseBasicDate = parseTimeM True defaultTimeLocale "%Y-%m-%d"
ตัวอย่างการใช้งานและผลลัพธ์:
main :: IO ()
main = print $ parseBasicDate "2023-04-01"
-- ผลลัพธ์: Just 2023-03-31 22:00:00 UTC
สำหรับสถานการณ์ที่ซับซ้อนขึ้น, ซึ่งคุณต้องการจัดการกับรูปแบบหรือตำแหน่งทางภูมิศาสตร์หลาย ๆ แบบ, ไลบรารีของบุคคลที่สาม เช่น date-parse
อาจสะดวกมากขึ้น:
ถ้าคุณได้เพิ่ม date-parse
เป็นการพึ่งพาและติดตั้งมัน, นี่คือวิธีที่คุณอาจใช้งานมัน:
import Data.Time.Calendar
import Text.Date.Parse (parseDate)
-- การแปลงสตริงวันที่ด้วยไลบรารี date-parse รองรับรูปแบบหลายแบบ
parseFlexibleDate :: String -> Maybe Day
parseFlexibleDate = parseDate
ตัวอย่างการใช้งานกับ date-parse
:
main :: IO ()
main = print $ parseFlexibleDate "April 1, 2023"
-- ผลลัพธ์: Just 2023-04-01
แต่ละตัวอย่างแสดงวิธีการพื้นฐานในการนำสตริงมาแปลงเป็นวันที่ที่สามารถใช้งานได้ใน Haskell. การเลือกระหว่างการใช้ฟังก์ชันที่มีอยู่ในไลบรารี time
และการเลือกใช้ไลบรารีของบุคคลที่สาม เช่น date-parse
ขึ้นอยู่กับความต้องการเฉพาะของแอปพลิเคชันของคุณ, เช่น ช่วงของรูปแบบข้อมูลนำเข้าที่คุณต้องการจัดการ.