这是一个令人难以置信的愚蠢问题,但我很难理解。
我有时间戳:
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小时的时区记录的?
答案 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]