hnakamur’s blog

ものすごい勢いで忘れる私のために未整理でもいいからとりあえずメモ

2011-07-19

HaskellのData.Timeを使ってみた

System.Timeは廃止予定でData.Timeを使えとのこと。

timeパッケージをインストール。
$ cabal install time

現在日時の取得と各種型変換とフォーマットのサンプル。ドキュメント見ながら試行錯誤でだらだら書いてみただけなので、もっと良いやり方と綺麗な書き方があると思いますが、とりあえずメモということで。
import Data.Time
import System.Locale

main = do
    t <- getCurrentTime
    putStrLn $ "day=" ++ (show $ toGregorian $ utctDay t)
    putStrLn $ "time=" ++ (show $ utctDayTime t)
    tz <- getTimeZone t
    putStrLn $ "timezone=" ++ show tz
    lzt <- utcToLocalZonedTime t
    let lt = zonedTimeToLocalTime lzt
        ltod = localTimeOfDay lt
    putStrLn $ "localTimeOfDay=" ++ show ltod
    putStrLn $ "localTimeOfDay hour=" ++ (show $ todHour ltod)
    putStrLn $ "localTimeOfDay min=" ++ (show $ todMin ltod)
    putStrLn $ "localTimeOfDay sec=" ++ (show $ todSec ltod)
    let fmt = iso8601DateFormat $ Just "%T"
    putStrLn $ "formattedUTCTime=" ++ (formatTime defaultTimeLocale fmt t)
    putStrLn $ "formattedLocalTime=" ++ (formatTime defaultTimeLocale fmt lzt)
実行結果
day=(2011,7,18)
time=58373.107045s
timezone=JST
localTimeOfDay=01:12:53.107045
localTimeOfDay hour=1
localTimeOfDay min=12
localTimeOfDay sec=53.107045000000
formattedUTCTime=2011-07-18T16:12:53
formattedLocalTime=2011-07-19T01:12:53

0 件のコメント:

ブログ アーカイブ