Haskell 创建日期的最短方法

Haskell 创建日期的最短方法,haskell,Haskell,我正在以特定格式创建日期,从可用的年、月和日开始: import Data.Time import Data.Time.Format getDate :: Text -> Text -> Text -> String getDate year month day = formatTime defaultTimeLocale "%B %d %Y" date where date = buildTime defaultTimeLo

我正在以特定格式创建日期,从可用的年、月和日开始:

import Data.Time
import Data.Time.Format

getDate :: Text -> Text -> Text -> String
getDate year month day = formatTime defaultTimeLocale "%B %d %Y" date
                         where date = buildTime defaultTimeLocale oldDate :: UTCTime
                               oldDate = zip "Ymd" $ map unpack [year, month, day]

无论如何,我在这里做的事情看起来太长了(在我将值放入一种格式,然后将该格式转换为另一种格式之前)。有没有办法只进行一次转换?我查看了API,但我不确定是否有类似的东西可用。

我想说,您的代码非常干净,您不必担心。但如果您仍然感兴趣,这比您的代码要短一些:

import Data.Time.Format
import Data.Text (Text, unpack, pack)
import Data.Time.Calendar

getDate :: Text -> Text -> Text -> String
getDate year month day = formatTime defaultTimeLocale "%B %d %Y" (fromGregorian (toInt year) (toInt month) (toInt day)) 
    where
      toInt :: (Read a, Num a) => Text -> a
      toInt = read . unpack
或者,如果您可以稍微更改界面,那么它可以更简短:

getDate2 :: Integer -> Int -> Int -> String
getDate2 year month day = formatTime defaultTimeLocale "%B %d %Y" (fromGregorian year month day)