我想在给定的时间内添加/减去指定的分钟数并找出结果时间。
e.g。假设给定时间是上午11:30,添加的分钟数是100,那么结果时间是01:10 PM
如何使用Data-Time库在Haskell中执行此操作?我试过阅读the docs on the Haskell site,但几乎找不到任何东西。
该文档站点上没有显示示例。此外,cookbook on the Haskell site不包含任何时间计算示例。
编辑:不需要当前时间,它应该适用于任何给定的时间。时间可以像“11:30”这样的字符串给出。
答案 0 :(得分:7)
添加100分钟的示例演示:
λ> import Data.Time
λ> currentTime <- getCurrentTime
λ> currentTime
2016-10-02 10:27:03.30961 UTC
λ> currentZone <- getCurrentTimeZone
λ> currentZone
IST
λ> utcToLocalTime currentZone currentTime
2016-10-02 15:57:03.30961
λ> let hundredMinutes = 100 * 60
λ> addUTCTime hundredMinutes currentTime
2016-10-02 12:07:03.30961 UTC
λ> let newTime = addUTCTime hundredMinutes currentTime
λ> utcToLocalTime currentZone newTime
2016-10-02 17:37:03.30961
addUTCTime功能用于添加100分钟。 也可以使用等效函数for subtracting。
答案 1 :(得分:0)
您可以使用Data.Time.Clock.getCurrentTime
来获取当前时间。这将返回IO UTCTime
。
然后,您可以使用Data.Time.Clock.addUTCTime
为之前提取的时间添加分钟数。
import Data.Time
currentTimePlusMinutes minutes = getCurrentTime
>>= (\time -> return (addUTCTime (minutes * 60) time))
如果您不想使用当前时间,则可以直接执行
addMinutes :: NominalDiffTime -> UTCTime -> UTCTime
addMinutes minutes = addUTCTime (minutes * 60)
λ> addMinutes 10 time
2016-10-02 12:41:09.68297 UTC