gpt4 book ai didi

julia - 将 Julia 的毫秒类型四舍五入到最接近的秒或分钟

转载 作者:行者123 更新时间:2023-12-04 01:49:39 29 4
gpt4 key购买 nike

我想计算一对四舍五入到最接近的秒或分钟的日期时间之间的差异。

initial = now()
println(typeof(initial))
sleep(12)
final = now()
difference = final - initial
println(typeof(difference))

给予

DateTime
Base.Dates.Millisecond

后一种类型很难使用,因为几乎所有便利类型都用于 DateTime。将 difference 转换为秒或分数分钟的推荐方法是什么?这可能不下降到整数吗?我宁愿避免这种情况,因为它更容易出错。

最佳答案

由于 difference 表示日期之间的持续时间而不是特定时间,因此仅以毫秒为单位的持续时间是有意义的。此外,DateTimeBase.Dates.Millisecond 对象在内部用 Int64 表示,所以一切都已经是整数。

julia> moment = now()
2016-12-22T22:54:57.393

julia> dump(moment)
DateTime
instant: Base.Dates.UTInstant{Base.Dates.Millisecond}
periods: Base.Dates.Millisecond
value: Int64 63618130497393

julia> dump(now()-moment)
Base.Dates.Millisecond
value: Int64 29820

将以毫秒为单位的值除以 1000 得到秒,或者除以 60,000 得到分钟。使用 round() 舍入到最接近的秒或分钟。

julia> d = (now() - moment).value/60_000
3.9330833333333333

julia> e = round(d)
4.0

然后乘以 1000 或 60,000 并将其反馈到 Dates.Millisecond 以将四舍五入的数字变回适当的对象:

julia> Dates.Millisecond(60_000e)
240000 milliseconds

DateDateTime 对象四舍五入到给定的时间间隔要简单得多,因为您可以根据documentation它将分派(dispatch)给相关方法:

julia> floor(Date(1985, 8, 16), Dates.Month)
1985-08-01

julia> ceil(DateTime(2013, 2, 13, 0, 31, 20), Dates.Minute(15))
2013-02-13T00:45:00

julia> round(DateTime(2016, 8, 6, 20, 15), Dates.Day)
2016-08-07T00:00:00

关于julia - 将 Julia 的毫秒类型四舍五入到最接近的秒或分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41293747/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com