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

What format is this date? [17/6/2015 5:50:22 5 -120]

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

脚本:

a= LOAD '/user/hit_data.tsv' using PigStorage('\t');  
b= FOREACH a GENERATE [=11=] 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

可能 -120240 确实是时区偏移量。它们可能以分钟而不是小时为单位。但是,没有标准,因此可能是格林威治标准时间分钟,或者格林威治标准时间西分钟。

换句话说,-120可能是UTC+02:00,或者UTC-02:00240 可能是 UTC+04:00,或 UTC-04:00

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

具有正值

由于您是获取数据的人,因此您比我们更能确定来源并消除歧义。如果来自第三方,请查看他们的规格,或联系他们并询问。

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