gpt4 book ai didi

javascript - 将 Nodejs 中 MongoDB 返回的 JSON 数组中的 UTC 日期转换为本地时间的有效方法

转载 作者:行者123 更新时间:2023-11-30 08:41:18 33 4
gpt4 key购买 nike

我正在使用 Node.js 查询 MongoDB,并且有一个字段是日期 (ISODate)。在 Node.js 中查询返回的日期格式后看起来像这样

DT : 2014-10-02T02:36:23.354Z

我想弄清楚的是如何根据下面的代码有效地将 DT 字段从 UTC 转换为本地时间 ISOString。换句话说,如果本地时间是美国东部时间,则类似这样

DT : 2014-10-02T23:36:23.354Z

我认为在 Mongo 的查询本身中我无能为力。我应该遍历数组结果集并手动更改日期吗?这里有更好的方法吗?我正在将响应发送到 HTTP 客户端。

collection.find(query,options).toArray(function (err, items) {
if (err) {
logAndSendDebugError(500, "Error issuing find against mongo Employees Collection -" + type, res);
} else {
var response = {
'type': type,
'employees': items
};
res.jsonp(response);
}
});

最佳答案

在 ES5 中,Date.parse 应该能够解析该格式,但它并不可靠。手动解析它并不难:

// Parse ISO 8601 UTC string like 2014-10-02T23:36:23.354Z
function parseISOUTC(s) {
var b = s.split(/\D/);
return new Date(Date.UTC(b[0], --b[1], b[2], b[3], b[4], b[5], b[6]));
}

创建的日期实例将具有根据系统设置计算的本地时区偏移量。要从本地日期获取 UTC ISO 8601 字符串,您可以使用 toISOString :

var date = new Date();
console.log(date.toISOString());

请注意,toISOString 是 ES5,因此如果在旧版浏览器中使用它,可能需要一个 polyfill。参见 MDN Date.prototype.toISOString() .

关于javascript - 将 Nodejs 中 MongoDB 返回的 JSON 数组中的 UTC 日期转换为本地时间的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26154376/

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