首页 > 解决方案 > 在 Julia 中将经过的时间转换为小时:分钟:秒

问题描述

将秒转换为 Hours:Minutes:Seconds 已在此处为 Python 提供了多种方法。

在 Julia 中如何做到这一点?

标签: julia

解决方案


方法一:

此代码遵循 Brandon Rhodes 在原始问题链接中用 Python 回答的问题。它回答了最初的问题。

优点:简单。

缺点:对于长时间的模拟运行,输出的格式不会像在此之后给出的方法那样好。

using Printf

start = time()
sleep(65.129)  # 65.129 seconds
elapsed = time() - start

(minutes, seconds) = fldmod(elapsed, 60)
(hours, minutes) = fldmod(minutes, 60)

@printf("%02d:%02d:%0.2f", hours, minutes, seconds)

"""========== The expected output is ==========
00:01:5.16
"""

方法二

@crstnbr 解决了该canonacalize函数的类似问题。我在 Julia 1.0.0 文档中没有看到它,但我在 Julia 源代码中找到了它,如下所示

它具有优雅地处理短时间和长时间段的整洁属性。

优点:为长时间运行提供有用的格式。

缺点:目前的 Julia 1.0.0 文档中似乎没有,可能很难记住。

julia> start = now(); sleep(1.23); elapsed = now() - start;
julia> canonicalize(Dates.CompoundPeriod(elapsed))
1 second, 246 milliseconds

julia> canonicalize(Dates.CompoundPeriod(elapsed*1000000))
2 weeks, 10 hours, 6 minutes, 40 seconds

如果您正在进行长时间的模拟,那可能会有所帮助。


推荐阅读