完全披露:我只使用 Julia 大约一天,所以现在提出问题可能为时过早。
我不太了解 Dates 模块的 Period 类型的效用。假设我有两次,我想找到它们之间的分钟数。看起来很自然的事情是减去时间,然后将结果转换为分钟。我可以处理没有 Minute 构造函数的情况(这对我的 Python 困扰的大脑来说似乎是最自然的),但似乎convert应该能够做一些事情。
从毫秒转换为整数到分钟的“解决方案”似乎有点恶心。这样做的更好/正确/惯用方法是什么?(我做了 RTFM,但也许答案就在那里,我错过了。)
y, m, d = (2015, 03, 16)
hr1, min1, sec1 = (8, 14, 00)
hr2, min2, sec2 = (9, 23, 00)
t1 = DateTime(y, m, d, hr1, min1, sec1)
t2 = DateTime(y, m, d, hr2, min2, sec2)
# println(t2 - t1) # 4140000 milliseconds
# Minute(t2 - t1) # ERROR: ArgumentError("Can't convert Millisecond to Minute")
# minute(t2 - t1) # ERROR: `minute` has no method matching
# minute(::Millisecond)
# convert(Minute, (t2-t1)) # ERROR: `convert` has no method matching
# convert(::Type{Minute}, ::Millisecond)
delta_t_ms = convert(Int, t2 - t1)
function ms_to_min(time_ms)
MS_PER_S = 1000
S_PER_MIN = 60
# recall that division is floating point unless you use div function
return div(time_ms, (MS_PER_S * S_PER_MIN))
end
delta_t_min = ms_to_min(delta_t_ms)
println(Minute(delta_t_min)) # 69 minutes
Run Code Online (Sandbox Code Playgroud)
(我很抱歉选择了一个引起窃笑的时间间隔。我碰巧将两个朋友的生日转换为小时和分钟,而没有真正考虑它。)