Haskell:
Obteniendo la fecha actual

Cómo hacerlo:

La biblioteca estándar de Haskell, base, proporciona el módulo Data.Time que ofrece funcionalidad para trabajar con fechas y horas. He aquí cómo usarlo para obtener la fecha actual:

import Data.Time (getCurrentTime, utctDay)

main :: IO ()
main = do
    now <- getCurrentTime
    let today = utctDay now
    print today

Ejemplo de salida:

2023-04-12

Para mayor flexibilidad, como formatear la fecha o trabajar con diferentes zonas horarias, la biblioteca time es invaluable. Así es cómo podrías formatear la fecha actual:

import Data.Time

main :: IO ()
main = do
    now <- getCurrentTime
    timezone <- getCurrentTimeZone
    let zoneNow = utcToLocalTime timezone now
    putStrLn $ formatTime defaultTimeLocale "%Y-%m-%d" zoneNow

Esto imprime la fecha actual en el formato AAAA-MM-DD, ajustada a la zona horaria local.

Adicionalmente, para el soporte de bibliotecas de terceros, time es altamente recomendado y a menudo utilizado dentro de la comunidad de Haskell por sus extensas capacidades de manipulación de fechas y horas. Los ejemplos anteriores utilizan esta biblioteca.

Si necesitas una manipulación de fechas más completa, incluyendo el parseo desde cadenas o operaciones aritméticas con fechas y horas, explorar funciones adicionales dentro de Data.Time será beneficioso.