การแยกวันที่ออกจากสตริง

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 ขึ้นอยู่กับความต้องการเฉพาะของแอปพลิเคชันของคุณ, เช่น ช่วงของรูปแบบข้อมูลนำเข้าที่คุณต้องการจัดการ.