Datetime Julia将秒从日期包转换为整数:没有与Int64(::秒)匹配的方法
我正在使用Dates模块,我正在尝试将秒对象转换为整数 当我尝试以下操作时,我得到一个错误:Datetime Julia将秒从日期包转换为整数:没有与Int64(::秒)匹配的方法,datetime,julia,Datetime,Julia,我正在使用Dates模块,我正在尝试将秒对象转换为整数 当我尝试以下操作时,我得到一个错误: x = Second(5) Int(x) # ERROR: MethodError: no method matching Int64(::Second) 为什么这样不行?如何将其提取为整数值 我的问题也适用于将分钟转换为整数、将天转换为整数、将月转换为整数等。请访问第二个对象的.value属性,而不是使用Int构造函数: x = Second(5) x.value # 5 这适用于日期模块中的其他
x = Second(5)
Int(x)
# ERROR: MethodError: no method matching Int64(::Second)
为什么这样不行?如何将其提取为整数值
我的问题也适用于将分钟转换为整数、将天转换为整数、将月转换为整数等。请访问第二个对象的.value属性,而不是使用Int构造函数:
x = Second(5)
x.value # 5
这适用于日期模块中的其他对象,如分钟
,天
,月
,等等
也可以查看@tholy的答案,了解它为什么会这样构造
作为旁注,dump()
在这样的情况下是一个有用的函数—当您使用一个不熟悉的对象并且希望了解如何访问其属性等等:
dump(x)
# Output:
# Second
# value: Int64 5
为了扩展J.Blauvelt的答案,省略
convert(Int,d)
是故意的。原因是convert
通常意味着等价,并在向容器添加元素时自动使用:
julia> c = [1,2]
2-element Array{Int64,1}:
1
2
julia> push!(c, Second(5))
ERROR: MethodError: Cannot `convert` an object of type Second to an object of type Int64
Closest candidates are:
convert(::Type{T<:Number}, ::T<:Number) where T<:Number at number.jl:6
convert(::Type{T<:Number}, ::Number) where T<:Number at number.jl:7
convert(::Type{T<:Integer}, ::Ptr) where T<:Integer at pointer.jl:23
...
Stacktrace:
[1] push!(::Array{Int64,1}, ::Second) at ./array.jl:853
[2] top-level scope at none:0
julia>c=[1,2]
二元数组{Int64,1}:
1.
2.
朱莉娅>推!(c,第二(5)段)
错误:MethodError:无法将Second类型的对象“转换”为Int64类型的对象
最接近的候选人是:
转换(::类型{T