#julia #julian-date
#джулия #julian-дата
Вопрос:
Вот мой код:
Dates.Year(div(19973,10)) # 1997 years
Dates.Month(round(mod(19973,10)*3)) # 9 months
все вышесказанное в порядке, но…
Dates.lastdayofquarter(Date(Dates.Year(div(19973,10)),Dates.Month(round(mod(19973,10)*3)),1))
# MethodError: no method matching Int64(::Year)
Closest candidates are:
Int64(!Matched::Union{Bool, Int32, Int64, UInt32, UInt64, UInt8, Int128, #Int16, Int8, UInt128, UInt16}) at boot.jl:708,
Int64(!Matched::Ptr) at boot.jl:718,
Int64(!Matched::Float32) at float.jl:706,
...
Date(::Year, ::Month, ::Int64) at types.jl:368,
top-level scope at untitled-b0de772dbeef3476c50547132427f175:73
include_string(::Function, ::Module, ::String, ::String) at loading.jl:1088
Ответ №1:
Вот оно:
julia> lastdayofquarter(Date(19973 ÷ 10, (19973 % 10)*3))
1997-09-30
Обратите внимание, что ÷
это целочисленное деление, %
это оператор по модулю, а Date
объект может быть создан путем передачи года и месяца.
Или другой однострочник, вдохновленный комментарием @phipsgabler:
julia> lastdayofquarter(Date(divrem(19973, 10).*(1,3)...))
1997-09-30
Комментарии:
1.
year, quarter = divrem(19973, 10)
это красиво разбивается.