如何在Julia中表示抽象时间

如何在Julia中表示抽象时间,julia,Julia,我试图在Julia中表示抽象时间,但在标准库的日期部分中找不到引用的时间。在Julia中有没有一种表示抽象时间的方法,比如年(1)+日(1) 我询问的原因是我想在Dates.AbstractTime上测试分派的一些代码,因此我需要传递适当的类型。我相信该语言中已经存在此功能: julia> using Dates julia> Year(2)+Month(3)+Day(100) 2 years, 3 months, 100 days 但是,如果您需要非常特殊的AbstractTi

我试图在Julia中表示抽象时间,但在标准库的日期部分中找不到引用的时间。在Julia中有没有一种表示抽象时间的方法,比如年(1)+日(1)


我询问的原因是我想在
Dates.AbstractTime
上测试分派的一些代码,因此我需要传递适当的类型。

我相信该语言中已经存在此功能:

julia> using Dates

julia> Year(2)+Month(3)+Day(100)
2 years, 3 months, 100 days
但是,如果您需要非常特殊的
AbstractTime
操作符,这里有一个玩具示例,应该很有用:

struct MyTime <: Dates.AbstractTime
    value::Float64
end
days(d::Day) = d.value
days(h::Hour) = h.value/24
days(m::Minute) = m.value/24/60
days(m::MyTime) = m.value
⊕(a::Dates.AbstractTime, b::Dates.AbstractTime) = MyTime(days(a)+days(b))

函数签名如下:
function pretty_time(T::Dates.AbstractTime)
这样做
pretty_time(年(2)+月(3)+日(100))
工作不顺利。请尝试
typeof(年(2)+月(3)+日(100))
julia> Day(1) ⊕ Hour(12) ⊕ Minute(6)
MyTime(1.5041666666666667)