如何将类似“2019-04-07T11:18:25.000Z”的字符串解析成DateTime

大家好,

请教如何将类似“2019-04-07T11:18:25.000Z”的字符串解析成DateTime。 谢谢。

julia> using Dates

julia> DateTime("2019-04-07T11:18:25.000Z","yyyy-mm-ddTHH:MM:SS.sssZ")
2019-04-07T11:18:25

julia> DateTime("2019-04-07T11:18:25")
2019-04-07T11:18:25

julia> DateTime("2019-04-07T11:18:25.000Z"[1:19])
2019-04-07T11:18:25

ref:

1 个赞

这种时间字符串是ISO 8601标准。Julia的DateTime默认不带时区支持,所以如果你的字符串固定都是这种格式的话就直接去掉末尾的Z,然后DateTime(“your string”)就好了。
如果可能带有时区的话要用这种方式:

julia> using Dates

julia> using TimeZones

julia> DateTime("2019-04-07T11:18:25.000+08:00",dateformat"y-m-dTH:M:S.sssz")
2019-04-07T11:18:25

julia> zdt=ZonedDateTime("2019-04-07T11:18:25.000+08:00")
2019-04-07T11:18:25+08:00

julia> zdt.utc_datetime
2019-04-07T03:18:25

julia> zdt.timezone
UTC+08:00

注意,DateFormat直接构造的开销很大,所以如果要在循环里构造的话一定要缓存它,或者用dateformat字面量
注意,TimeZone.jl会扩展DateTime的格式字符,z表示+0800或+08:00这种的偏移量,Z表示Asia/Shanghai、UTC这样的时区名字,所以你如果using了这个包就要把本来表示“Z”的分隔符前面加反斜杠转义

1 个赞