解析具有 3 位格式的时区后跟"Z"的字符串时间戳



在Hadoop基础设施(基于Java)中,我将时间戳作为字符串值,格式如下:

2015-10-01T04:22:38:208Z
2015-10-01T04:23:35:471Z
2015-10-01T04:24:33:422Z

我在下面的SimpleDateFormat Java类示例中尝试了不同的模式,但没有成功。

将'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'TH:MM:ss.SSZ"?但它仍然应该看起来像"2015-11-27T10:50:44:00-08:00"作为标准化格式ISO-8601。

也许,这个格式一开始没有被正确解析?

我使用Ruby、Python、Pig、Hive来处理它(但不是直接使用Java),所以任何示例都有帮助。谢谢

I非常强烈怀疑最后三位数字与时区无关,而是毫秒,是的,Z表示UTC。有点奇怪的是,他们使用:而不是.作为秒和毫秒之间的分隔符,但这种情况有时会发生。

在这种情况下,您需要

"yyyy-MM-dd'T'HH:mm:ss:SSSX"

或使用

"yyyy-MM-dd'T'HH:mm:ss:SSS'Z'"

并明确地将SimpleDateFormat的时区设置为UTC。

相关内容

  • 没有找到相关文章

最新更新