这个日期是什么格式的? [17/6/2015 5:50:22 5 -120]

时间:2015-09-29 19:00:57

标签: java date format apache-pig

上下文:从第三方数据源获取日期,如下所示。我正在使用Pig脚本将此字符串转换为日期。

脚本:

a= LOAD '/user/hit_data.tsv' using PigStorage('\t');  
b= FOREACH a GENERATE $0 as post_t_time_info; 
c= FOREACH b GENERATE ToDate(post_t_time_info,'DD/MM/YYYY HH:mm:ss e ZZZ')

日期对象采用的示例值:

17/6/2015 5:50:22 5 -120
17/6/2015 0:7:6 5 240

我无法理解什么是-120/240。我尝试使用时区(ZZZ)和毫秒(SSS),但似乎不正确。

我当前使用的格式是'DD / MM / YYYY HH:mm:ss e X',其中X未知并期待适当的模式。

谢谢!

参考: http://userguide.icu-project.org/formatparse/datetime http://www.unicode.org/reports/tr35/tr35-25.html#Time_Zone_Fallback

1 个答案:

答案 0 :(得分:2)

-120240确实是时区偏移。它们可能是分钟而不是小时。但是,没有标准,因此可能是GMT的分钟,或GMT的分钟 west

换句话说,-120可以是UTC+02:00UTC-02:00240可以是UTC+04:00,也可以是UTC-04:00

例如,如果它是从JavaScript Date对象的getTimezoneOffset函数中获取的,那么该符号将与您的预期相反。它对 west 有正值,而通常的ISO8601约定对 east 有正值。

由于您是获取数据的人,因此您处于比我们更好的位置来识别源并消除歧义。如果是来自第三方,请查看其规格,或与他们联系并询问。

另外 - 你说你使用的是Apache Pig,但根据their documentationToDate函数使用Java SimpleDateFormat - 它不使用相同的格式限定符ICU,它也没有格式限定符来识别时区偏移量。您可能需要编写自己的函数,而不是仅使用内置的ToDate