朱莉娅:不同时期之间的转换

时间:2015-03-16 22:23:44

标签: julia

完全披露:我只使用了Julia大约一天,所以提出问题可能为时尚早。

我真的不了解Dates模块的Period类型的效用。让我们说我有两次,我想找到它们之间的分钟数。看起来自然而然的事情就是减去时间然后将结果转换为分钟。我可以处理没有Minute构造函数(这对于我的Python添加的大脑来说似乎最自然),但似乎convert应该可以做某事。

"解决方案"从Millisecond转换为Int到Minute似乎有点粗略。这样做的更好/正确/惯用的方法是什么? (我做了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

(我为选择引发刺激的时间间隔而道歉。我碰巧将两个朋友的生日转换成了几小时和几分钟而没有真正想到它。)

1 个答案:

答案 0 :(得分:3)

好问题;好像我们应该添加它! (披露:我制作了Dates模块。)

实际上,我们曾经在那里进行过转换,但是由于某种原因,它们被取出(我认为它是围绕不精确的转换是否应该抛出错误,最近已经清理了很多在基地为Ints / Floats)。我认为将它们添加回去是绝对有意义的。对于其他操作我们实际上有一些in there,所以很明显它们很有用。

与往常一样,这也是一个问题,谁有时间进行编码/测试/提交,并希望由具有真正需求功能的人员驱动,如果你有&#39,可以免费提交PR ;感到雄心勃勃!