解析带时区的 3 位数格式的字符串时间戳,后跟 'Z'
Parsing string timestamp with time zone in 3-digit format followed by 'Z'
在 Hadoop 基础设施(Java-based)中,我得到的时间戳是这种格式的字符串值:
2015-10-01T04:22:38:208Z
2015-10-01T04:23:35:471Z
2015-10-01T04:24:33:422Z
我在 examples 之后为 SimpleDateFormat Java class 尝试了不同的模式,但没有成功。
将 'T' 替换为 ' ',将 'Z' 替换为 '',然后
"yyyy-MM-dd HH:mm:ss:ZZZ"
"yyyy-MM-dd HH:mm:ss:zzz"
"yyyy-MM-dd HH:mm:ss:Z"
"yyyy-MM-dd HH:mm:ss:z"
无需更换,
"yyyy-MM-dd'T'HH:mm:ss:zzz'Z'"
事实上,这种格式并没有在示例中列出。我应该用它做什么?
也许那 3 位数字是毫秒,时间是 UTC,像这样:"yyyy-MM-dd'T'HH:mm:ss.SSSZ"?但它仍然应该看起来像“2015-11-27T10:50:44.000-08:00”作为标准化格式 ISO-8601。
也许,这种格式首先没有被正确解析?
我使用 Ruby、Python、Pig、Hive 来处理它(但不是直接 Java),所以任何例子都有帮助。谢谢!
我非常 强烈怀疑最后三位数字与时区无关,而是毫秒,是的,Z
表示 UTC。他们使用 :
而不是 .
作为秒和毫秒之间的分隔符,这有点奇怪,但这有时会发生。
在那种情况下你想要
"yyyy-MM-dd'T'HH:mm:ss:SSSX"
...或使用
"yyyy-MM-dd'T'HH:mm:ss:SSS'Z'"
并将您的 SimpleDateFormat
的时区明确设置为 UTC。
在 Hadoop 基础设施(Java-based)中,我得到的时间戳是这种格式的字符串值:
2015-10-01T04:22:38:208Z
2015-10-01T04:23:35:471Z
2015-10-01T04:24:33:422Z
我在 examples 之后为 SimpleDateFormat Java class 尝试了不同的模式,但没有成功。
将 'T' 替换为 ' ',将 'Z' 替换为 '',然后
"yyyy-MM-dd HH:mm:ss:ZZZ"
"yyyy-MM-dd HH:mm:ss:zzz"
"yyyy-MM-dd HH:mm:ss:Z"
"yyyy-MM-dd HH:mm:ss:z"
无需更换,
"yyyy-MM-dd'T'HH:mm:ss:zzz'Z'"
事实上,这种格式并没有在示例中列出。我应该用它做什么? 也许那 3 位数字是毫秒,时间是 UTC,像这样:"yyyy-MM-dd'T'HH:mm:ss.SSSZ"?但它仍然应该看起来像“2015-11-27T10:50:44.000-08:00”作为标准化格式 ISO-8601。
也许,这种格式首先没有被正确解析?
我使用 Ruby、Python、Pig、Hive 来处理它(但不是直接 Java),所以任何例子都有帮助。谢谢!
我非常 强烈怀疑最后三位数字与时区无关,而是毫秒,是的,Z
表示 UTC。他们使用 :
而不是 .
作为秒和毫秒之间的分隔符,这有点奇怪,但这有时会发生。
在那种情况下你想要
"yyyy-MM-dd'T'HH:mm:ss:SSSX"
...或使用
"yyyy-MM-dd'T'HH:mm:ss:SSS'Z'"
并将您的 SimpleDateFormat
的时区明确设置为 UTC。