Elasticsearch 中的日期字段为什么要以 'Z' 结尾?
例如:
2016-05-16T00:00:00.000Z
它有什么含义?
这对任何事情有用吗?
会有什么副作用吗?
能否将其去除?
joda time 呢?
Elasticsearch 中的日期字段为什么要以 'Z' 结尾?
例如:
2016-05-16T00:00:00.000Z
它有什么含义?
这对任何事情有用吗?
会有什么副作用吗?
能否将其去除?
joda time 呢?
这是什么意思?
'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时间呢?”
“它有什么问题吗?......”
希望这可以帮助您。来自RFC3339关于互联网上的日期和时间:
数字偏移量被计算为“本地时间减去UTC”。因此,可以通过从本地时间减去偏移量来确定UTC中的等效时间。例如,18:50:00-04:00与22:50:00Z是相同的时间。(此示例显示通过添加偏移量的绝对值处理负偏移量。)
因此,以Z
结尾的日期表示UTC中的日期时间。它应该等同于2016-05-16T00:00:00.000Z-00:00
。
时区偏移量的存在与否仅仅取决于Elasticsearch字段定义中使用的日期格式。