我正在尝试将日志日期列表解析为DateTime
个实例,但它会抛出不准确的错误。我做错了什么,我该怎么做呢?
julia> using Base.DateTime
julia> readdlm("push-log.txt")[:,1]
16-element Array{Any,1}:
"2016-06-22T14:04:09.9896422Z"
"2016-06-22T14:04:10.0052910Z"
"2016-06-22T14:04:11.3177753Z"
"2016-06-22T14:04:12.3334265Z"
"2016-06-22T14:04:13.4896544Z"
"2016-06-22T14:04:14.1459007Z"
"2016-06-22T14:04:14.6459071Z"
"2016-06-22T14:04:15.6615276Z"
"2016-06-22T14:04:16.2084073Z"
"2016-06-22T14:04:17.2865371Z"
"2016-06-22T14:04:18.3490382Z"
"2016-06-22T14:04:19.2396584Z"
"2016-06-22T14:04:19.7709572Z"
"2016-06-22T14:04:20.9584180Z"
"2016-06-22T14:04:22.0209160Z"
"2016-06-22T14:04:22.6615594Z"
julia> map(readdlm("push-log.txt")[:,1]) do str
DateTime(str, "y-m-dTH:M:S.sZ")
end
ERROR: InexactError()
in slotparse at dates/io.jl:131
in getslot at dates/io.jl:143
in parse at dates/io.jl:158
in anonymous at none:2
in map at essentials.jl:153
julia> versioninfo()
Julia Version 0.4.6
Commit 2e358ce (2016-06-19 17:16 UTC)
Platform Info:
System: Windows (x86_64-w64-mingw32)
CPU: Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz
WORD_SIZE: 64
BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
LAPACK: libopenblas64_
LIBM: libopenlibm
LLVM: libLLVM-3.3
答案 0 :(得分:6)
来自docs:
Date
模块提供两种类型来处理日期:Date
和DateTime
,分别代表日和毫秒精度;
(重点补充)。
因此,在解析具有三个以上小数位的时间戳时,DateTime
似乎不是舍入,而是InexactError
抛出julia> t = "2016-06-22T14:04:22.6615594Z"
"2016-06-22T14:04:22.6615594Z"
julia> DateTime(t,"y-m-dTH:M:S.sZ")
ERROR: InexactError()
in slotparse at dates/io.jl:131
in getslot at dates/io.jl:143
in parse at dates/io.jl:158
julia> t2 = "2016-06-22T14:04:22.662Z"
"2016-06-22T14:04:22.662Z"
julia> DateTime(t2,"y-m-dTH:M:S.sZ")
2016-06-22T14:04:22.662
。将其限制为三位小数有效:
DateTime
更简洁地说,Millisecond
无法处理julia> Base.Dates.Millisecond(111)
111 milliseconds
julia> Base.Dates.Millisecond(111.1)
ERROR: InexactError()
in call at dates/types.jl:18
的分数:
{{1}}