首页 > 解决方案 > 在 Julia 中为 datetime 添加一个小时?

问题描述

假设我有一个日期时间,我想向该日期时间添加一个任意时间段并获得一个新的日期时间。例如,我想查找除夕后 333 小时后的日期和时间。

出现两个问题:

  1. 我实际上无法创建超过 23 小时的时间
  2. 如果我确实创建了 ::Time,我无法将它添加到 ::DateTime

我的问题基本上是你如何将时间加在一起?

代码

julia> dt = DateTime(2021,1)
2021-01-01T00:00:00

julia> t = Time(333)
ERROR: ArgumentError: Hour: 333 out of range (0:23)

julia> t = Time(1)
01:00:00

julia> dt + t
ERROR: MethodError: no method matching +(::DateTime, ::Time)
Closest candidates are:
  +(::Any, ::Any, ::Any, ::Any...) at operators.jl:560

标签: datetimejuliadate-arithmetic

解决方案


您不应该将Times 添加在一起,因为这些是及时的实例。您想将Periods 添加到您的Time中,以找出经过一段时间后的时间:

julia> using Dates

julia> dt = DateTime(2021,1)
2021-01-01T00:00:00

julia> dt + Hour(333)
2021-01-14T21:00:00

julia> Hour <: Period
true

julia> Time <: Period
false

推荐阅读