如何在Julia中将毫秒数组转换为MM:SS:ss格式或DateTime格式?

时间:2019-06-25 10:44:06

标签: datetime julia milliseconds

我正在尝试将毫秒转换为分钟,但无法这样做。我一直期望结果的形式 MM:SS 我将结果保存在一个数据框中,该数据框显示的数据类型为毫秒,即使将整行除以60000,该数据类型仍然保持为毫秒

delivery_time = delivery_timestamp - init_timestamp
783358-element Array{Millisecond,1}:
 34200000 milliseconds
 14580000 milliseconds
 27300000 milliseconds
 9180000 milliseconds 
 13560000 milliseconds
 6960000 milliseconds 
 12600000 milliseconds
 9600000 milliseconds 
 7500000 milliseconds 
 13080000 milliseconds
 9180000 milliseconds 
 9600000 milliseconds 
 27660000 milliseconds
 ⋮                    

delivery_time = (delivery_time)/60000
783358-element Array{Millisecond,1}:
 570 milliseconds
 243 milliseconds
 455 milliseconds
 153 milliseconds
 226 milliseconds
 116 milliseconds
 210 milliseconds
 160 milliseconds
 125 milliseconds
 218 milliseconds
 153 milliseconds

我希望结果会

df.delivery_time
06:22
07:32
09:51
.
.
.

或者即使我可以得到结果

df.delivery_time
570 minute
243 minute
455 minute
.
.
.

2 个答案:

答案 0 :(得分:1)

您可以将Millisecond转换为例如。 Minute仅在精度方面有所损失。这是一个四舍五入到最接近分钟的示例:

@. Minute(round(Int, Dates.value(delivery_time) / (1000 * 60)))

如果您不需要Minute值,而只是浮动而不四舍五入就可以:

@. Dates.value(delivery_time) / (1000 * 60)

或例如

Dates.value.(delivery_time) / (1000 * 60)

如果您不想使用@.

最后你可以写

Time(0) .+ delivery_time

这是无损的,但是现在返回的对象不是Period的子类型,它将“环绕” 24小时。如果要避免自动换行,请使用DateTime而不是上面的Time

答案 1 :(得分:0)

非常感谢您的帮助。您解决了我的大部分问题。我很天真,但是在茱莉亚开始一周后。 我曾经用过- df.delivery_time = map((x) -> convert(Time,x),df[:15]) 结果 783358-element Array{Time,1}: 09:30:00 04:03:00 07:35:00 02:33:00 03:46:00 01:56:00