在Elasticsearch中,日期结尾处的Z是什么意思?

10

Elasticsearch 中的日期字段为什么要以 'Z' 结尾?

例如:

2016-05-16T00:00:00.000Z

它有什么含义?

这对任何事情有用吗?

会有什么副作用吗?

能否将其去除?

joda time 呢?

2个回答

18

这是什么意思?

'Z'代表协调世界时(UTC)。
参考资料:
https://www.w3.org/TR/NOTE-datetime

尽量不要存储本地日期。如果你想找到一个关于日期以及为什么应该使用UTC的好线索,请查看此讨论

这对任何事情有用吗?

非常有用,将所有日期都存储为UTC允许轻松地将日期从一个区域转换到另一个区域。它还使得日期比较和日期可视化保持一致。

它有害吗?

不会。

我可以去掉它吗?

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

以下是另一个日期示例:

我在2016年12月24日下午1点给在X国家的朋友打了电话(比我快6小时)。对于他来说,是晚上7点。因此,我们有两个本地日期时间。

一个是我的时间:

1pm December 24th 2016 in London

给我的朋友一个:

7pm December 24th 2016 in Country X
如果我删除“in...”部分,这两个时间就成为相隔5小时的两个时间点。这意味着我们不可能在电话中交谈,对吗? 不,因为它们是跨越两个区域的同一时间点。 “那么joda时间呢?” “它有什么问题吗?......” 希望这可以帮助您。

为什么说不要存储本地日期? - Filipe Miranda
1
例如:如果我有一个名为birth_timestamp的字段,并且我将我的birth_timestamp存储到集中式数据库中,然后来自中国的某个人也保存他们的数据,则必须计算出时间差以进行任何类型的绘图。通常使用协调世界时(UTC)是一种规范和最佳实践。 - Rhys Bradbury
1
好好阅读一下这个:https://dev59.com/w2w15IYBdhLWcg3wFHtZ - Rhys Bradbury

1

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

数字偏移量被计算为“本地时间减去UTC”。因此,可以通过从本地时间减去偏移量来确定UTC中的等效时间。例如,18:50:00-04:00与22:50:00Z是相同的时间。(此示例显示通过添加偏移量的绝对值处理负偏移量。)

因此,以Z结尾的日期表示UTC中的日期时间。它应该等同于2016-05-16T00:00:00.000Z-00:00

时区偏移量的存在与否仅仅取决于Elasticsearch字段定义中使用的日期格式


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接