Преобразование даты в строку

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
        -- Форматирование даты как "ГГГГ-ММ-ДД"
        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 ознакомьтесь с следующим: