gpt4 book ai didi

javascript - 即使服务器/客户端位于同一时区,日期输入提要也是错误的

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:41 24 4
gpt4 key购买 nike

先决条件:

  1. 我的服务器和客户端计算机都有相同的时区,即印度标准时间(UTC +5:30)。

  2. 我在 CentOS 6.9 上使用 Meteor JS 1.5 + MongoDB 3.2

  3. 我已将 Linux 服务器 /etc/localtime/ 设置为 Asia/Kolkata,当我发出命令 date 时,它会在下面显示,

2017 年 7 月 12 日星期三 13:40:25 IST

操作:

下面是在服务器方法上运行的代码段,

History.insert({
"time": new Date(),
});

由于代码在13:40PM IST运行,因此 mongoDb 中显示的日期条目如下,

> db.History.find({}).pretty();
{
"_id" : "zFHFgBfGL2JxNR95N",
"time" : ISODate("2017-07-12T08:10:10.175Z"),
"result" : 1
}

问题:

为什么使用 Meteor JS 输入的日期与设置的时区不一样?为什么与机器(大约下午 13:40)不一样?

最佳答案

首先,IST 是 UTC +5:30,因此 13:40 IST 与 08:10 UTC 相同。

现在检查MongoDB docs关于日期类型:

Internally, Date objects are stored as a 64 bit integer representing the number of milliseconds since the Unix epoch (Jan 1, 1970)

请注意,时区根本没有被存储。

在同一个文档中进一步说明:

The mongo shell wraps objects of Date type with the ISODate helper; however, the objects remain of type Date.

这就是为什么您在 Mongo Shell 中查询时会看到返回 ISODate("2017-07-12T08:10:10.175Z")

如果切换到 Meteor Shell并查询您的数据,它将再次显示为 javascript 日期类型,并以您的服务器上定义的时区显示。

// try this in Meteor Shell
History.find({}).fetch()

如果您将此日期发送给客户,该日期将显示在其设备上定义的时区。

关于javascript - 即使服务器/客户端位于同一时区,日期输入提要也是错误的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45052267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com