如何阅读时间戳?

时间:2018-01-30 16:28:59

标签: time timestamp

这是一个令人难以置信的愚蠢问题,但我很难理解。

我有时间戳:

 2017-02-03T06:16:59.094-08:00

UTC时间戳是什么时候?是2017-02-03 14:16:59.094还是2017-02-02 06:16:59.094

换句话说,最后的-08:00是否意味着这是本地时间戳,而时区是否落后于UTC 8小时? (2017-02-03 14:16:59.094

或者它只是意味着时间戳是UTC,但它是在比UTC晚8小时的时区记录的?

2 个答案:

答案 0 :(得分:1)

该时间戳有一个时区 offset ,告诉您 UTC偏移的时间。没有偏移,它变为2017-02-03T14:16:59.094-00:00

  

换句话说,-08:00结尾是否意味着这是本地时间戳,时区比UTC晚8小时? (2017-02-03 14:16:59.094)

     

或者它只是意味着时间戳是UTC,但它是在比UTC晚8小时的时区记录的?

在某种程度上,两者兼而有之。我认为对于什么构成UTC时间戳存在误解。每个UTC时间戳都有一个"zulu"时间的偏移量。

答案 1 :(得分:0)

如果您要使用UTC时间,请增加8小时。您看到的时间是当地时间。

这是它的工作方式:

  

与UTC的时间偏移量与UTC的偏移量被附加到以下时间中   与上方的“ Z”相同,形式为±[hh]:[mm],±[hh] [mm]或   ±[hh]。因此,如果描述的时间比UTC提前一小时,   就像冬天在柏林的时间一样,区域标记为   “ +01:00”,“ + 0100”或简称为“ +01”。代表落后于UTC的时间   偏移量为负。例如,标准时间在纽约的时间   (不是夏令时)小时为UTC-05:00,区域指示符将为   然后为“ −05:00”,“ − 0500”或简称为“ −05”。有关其他时间偏移,请参见   UTC时间偏移量列表。代表负偏移量,ISO 8601   指定使用连字符-减号或减号。如果   互换字符集是受限制的,没有负号   符号字符,则应使用连字符-减号。 ASCII不   带有减号,因此其连字符-减号(代码为45小数   或2D十六进制)。如果字符集为减号   符号,则应使用该字符。 Unicode带有减号,   其字符代码为U + 2212(十六进制的2212); HTML   字符实体调用为-。

     

以下所有时间均指同一时刻:“ 18:30Z”,   “ 22:30 + 04”,“ 1130-0700”和“ 15:00-03:30”。航海时区字母   除了Z以外,不使用。要计算UTC时间,必须   从当地时间减去偏移量,例如为“ 15:00−03:30”做   15:00 −(−03:30)获得18:30 UTC。

     

偏移量为零,除了具有特殊表示形式外   “ Z”也可以用数字表示为“ +00:00”,“ + 0000”或“ +00”。   但是,不允许使用负数对其进行数字说明   符号,如“ -00:00”,“-0000”或“ -00”。指示标志用法的部分   (该标准的2004年版本中的3.4.2节)规定:   正号或零值必须使用符号,而负号必须使用负号   负值。与此规则相反,RFC 3339是   ISO 8601的配置文件,允许使用“ -00”   表示为“ +00”,但含义不同。[29]

     

ISO 8601允许连字符(-)用作减号(-)字符   当字符集受到限制时。[30]相反,RFC 3339   明确要求连字符(-)代表负数   偏移并且不允许使用减号(−)。[31]

https://en.wikipedia.org/wiki/ISO_8601