我很惊讶以前没有人问过这个问题,但是......我怎么能在几小时,几分钟和几秒钟内轻松打印NominalDiffTime
? (可能天,如果碰巧那么久......)
由于未知原因,Show
实例打印总秒数,这显然是无用的。 (多长时间是13,055.22秒?那几分钟?一天?半小时?我不知道!)
FormatTime
课程,但它并不适用于NominalDiffTime
。
您似乎可以使用floor
方法将总秒数作为实际的数字,但那么您如何使用它?
据我所知,DiffTime
也没有帮助。
必须才能真正打印持续时间......
答案 0 :(得分:3)
您可以打印DiffTime
- 实际上代表持续时间,可能是您应该使用的类型 - 通过TimeOfDay
。正确地掌握DiffTime
实际上有点棘手;你需要:
utcToTAITime
转换为AbsoluteTime
和diffAbsoluteTime
获取DiffTime
和timeToTimeOfDay
让图书馆为你做你的divmod,最后formatTime
打印此内容。答案 1 :(得分:1)
floor
[1]为您提供(如您所说)秒数,然后您可以使用div
和mod
转换为小时,分钟和秒。
例如:
floor ndt `div` 60 -- minutes, which may be more than 59
floor ndt `mod` 60 -- seconds
[1]与fromEnum
不同,后者是"转换函数"但不会转换为秒,这与文档说的相反。
答案 2 :(得分:0)
myFormatDiffTime :: NominalDiffTime -> String
myFormatDiffTime = formatTime defaultTimeLocale "%H:%M:%S" . posixSecondsToUTCTime
答案 3 :(得分:0)
time-1.10对NominalDiffTime具有formatTime
支持。
formatTime defaultTimeLocale "%H:%M:%S" ndt