2015-11-23 103 views
0

在Hadoop的架构(基于Java的),我得到的时间戳的字符串值,这种格式的时区:解析字符串时间戳与3位格式,然后“Z”

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

我尝试了不同的patters SimpleDateFormat Java类的examples没有任何成功。

代替 '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”?但标准格式ISO-8601仍然应该看起来像“2015-11-27T10:50:44.000-08:00”。

也许,这种格式不是正确解析的第一个地方?

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

回答

2

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

在这种情况下,你想

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

...或使用

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

和你SimpleDateFormat的时区明确设置为UTC。

+0

谢谢乔恩,非常感谢您的及时回复。任何人都赞同乔恩的观点? – mel

+1

是的,我同意乔恩的观点。这当然不是一个时区。毫秒是最有可能的。 ':'是错误的,它应该是ISO8601规范的''''或','。 –

相关问题