2017-12-20 47 views
1

「1週間前」のUNIXタイムスタンプを取得するにはどうすればよいですか?現在、私は実行します。Haskell:UNIXタイムスタンプに変換する

import Data.Time 
... 
oneWeekAgo = toTimestamp . addDays (-7) <$> now 
    where now = utctDay <$> getCurrentTime 
     toTimestamp = formatTime defaultTimeLocale "%s" 

しかしformatTimeの文字列を返すので、これは動作しません。

答えて

0

ちょうど私が思いついた解決策は、UTCTime day 0を使用して日の値を時間に変換することです。

import Data.Time 
... 
oneWeekAgo = toTimestamp . toTime . addDays (-7) <$> now 
    where now = utctDay <$> getCurrentTime 
     toTimestamp = formatTime defaultTimeLocale "%s" 
     toTime day = UTCTime day 0 
1

私は正確に何をしたいか分からないが、あなたはutctDayを変更し、POSIXタイムスタンプにUTCTimeを変換するutcTimeToPOSIXSecondsを使用することができます。

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

oneWeekAgo = do now <- getCurrentTime 
       let oneWeekAgo = now { utctDay = addDays (-7) $ utctDay now } 
       return $ utcTimeToPOSIXSeconds oneWeekAgo 

また、秒を差し引くだけで問題ありません。

oneWeekAgo = ((subtract (7 * 24 * 60 * 60)) . utcTimeToPOSIXSeconds) <$> getCurrentTime 
+0

後は短く甘いですが、私たちは '7 * 24 * 60 * 60'で逃げることができますか?私たちがやろうとしていることがすぐ明らかになるので、私は '-7'を書くのが好きです。 –

関連する問題