Datetime Julia将秒从日期包转换为整数:没有与Int64(::秒)匹配的方法

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 这适用于日期模块中的其他

我正在使用Dates模块,我正在尝试将秒对象转换为整数

当我尝试以下操作时,我得到一个错误:

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