Elasticsearch中日期结束时的Z是什么

时间:2016-05-10 21:00:24

标签: java elasticsearch timezone java-8 jodatime

为什么在Elasticsearch中我们有' Z' 在日期字段的末尾?

例如:

2016-05-16T00:00:00.000Z

这是什么意思?

这对任何事都有用吗?

有害吗?

我可以摆脱它吗?

joda时间怎么样?

2 个答案:

答案 0 :(得分:14)

  

这是什么意思?

'Z'表示UTC 参考:
https://github.com/mbostock/d3/wiki/Arrays#d3_zip

尽量不要存储本地日期。如果您想在日期找到一个好的主题,为什么要使用UTC检查https://www.w3.org/TR/NOTE-datetime

  

这对任何事都有用吗?

非常有用,以UTC格式存储所有日期可以轻松地将日期从区域设置转换为区域设置。它还允许日期比较和日期可视化保持一致。

  

有害吗?

没有

  

我可以摆脱它吗?

如果你愿意?我不建议这样做......这有点像从交易中删除货币字段。这笔交易没有任何意义。

日期的另一个例子:

我在2016年12月24日下午1点在X国(即提前6小时)打电话给我的朋友。 对他来说是晚上7点。 所以我们有两个本地日期时间。

一个给我:

1pm December 24th 2016 in London

一个给我的朋友:

7pm December 24th 2016 in Country X

如果我删除'in ...'部分这两个变成两个相隔5小时的时间实例。这意味着我们不可能通过电话发言?正确?

不,因为它们在两个区域设置中的时间相同。

  

joda时间怎么样?

怎么样?...

我希望这会有所帮助。

答案 1 :(得分:1)

RFC3339关于互联网上的日期和时间:

  

数值偏移计算为"当地时间减去UTC"。所以      可以通过减去偏移量来确定UTC中的等效时间      从当地时间开始。例如,18:50:00-04:00与此同时发生      22:50:00Z。 (此示例显示通过添加处理的负偏移      偏移的绝对值。)

因此,结尾处Z的日期是UTC的日期和时间。它应该相当于2016-05-16T00:00:00.000Z-00:00

是否存在时区偏移只是date format being used in Elasticsearch's field definition的问题。