在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。