【问题标题】:Haskell: How to pretty print number of seconds as a date and time?Haskell:如何将秒数漂亮地打印为日期和时间?
【发布时间】:2016-11-11 04:44:55
【问题描述】:

我有一个整数值,即自纪元以来的秒数。我可以将其输出为一个大整数,但我想将其显示为人类可读的日期和时间。

例如:

secToTimestamp :: Int32 -> [Char]

返回类似:

2016-01-01 14:11:11

【问题讨论】:

标签: date haskell timestamp seconds


【解决方案1】:

为了有一个简单的基于time 的解决方案(因为time 是用于处理任何时间相关的事实上的模块):

import Data.Time.Clock.POSIX
import Data.Time.Format

secToTimestamp :: Int32 -> String
secToTimestamp = formatTime defaultTimeLocale "%F %X" . posixSecondsToUTCTime . fromIntegral

【讨论】:

    【解决方案2】:

    可能使用unix-time模块

    {-# LANGUAGE OverloadedStrings #-}
    import           Prelude
    import qualified Data.ByteString.Char8  as B
    import           Data.UnixTime
    import           Data.Int
    import           Data.Functor
    
    secToTimestampGMT :: Int32 -> [Char]
    secToTimestampGMT t = B.unpack $ formatUnixTimeGMT "%Y-%m-%d %H-%M-%S" $ UnixTime (fromIntegral t) 0
    
    secToTimestamp :: Int32 -> IO [Char]
    secToTimestamp t = B.unpack <$> (formatUnixTime "%Y-%m-%d %H-%M-%S" $ UnixTime (fromIntegral t) 0)
    

    【讨论】:

      猜你喜欢
      • 2016-07-07
      • 2012-05-04
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 2011-03-29
      • 1970-01-01
      • 2015-01-22
      相关资源
      最近更新 更多