2016-06-22 2 views
5

ログ日付のリストをDateTimeインスタンスに解析しようとしていますが、不正確なエラーがスローされます。私は間違って何をしていますか、どうすればいいですか? docsからジュリアのZulu日付の解析でInexactErrorがスローされる

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 

答えて

6

Dateのモジュールは、日付を操作するための2つのタイプの提供:1日とミリ秒の精度それぞれを表す、DateDateTimeと、

(強調が加えられる)。

したがって、小数点以下3桁のタイムスタンプを解析すると、DateTimeInexactErrorをスローします。小数点以下3桁にそれを制限すると動作します:

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 

より簡潔に、DateTimeMillisecondの画分を処理することはできません。

julia> Base.Dates.Millisecond(111) 
111 milliseconds 

julia> Base.Dates.Millisecond(111.1) 
ERROR: InexactError() 
in call at dates/types.jl:18 
+0

おかげ - *これはなぜ起こるか*を説明します。私のログファイルを解析する最善の方法は何ですか? –

+2

丸め[来る](https://github.com/JuliaLang/julia/pull/17037)。 – daycaster

+0

@daycaster素晴らしい、知っておいてよかった! – Chris