gpt4 book ai didi

javascript - Node js 中的新日期(年、月、日)自动转换为 UTC 时区

转载 作者:搜寻专家 更新时间:2023-10-31 23:34:35 26 4
gpt4 key购买 nike

    var dateInCST; //Getting CST date as input.

/*Triming the time part and retaining only the date.*/
var onlyDateInCST = new Date(dateInCST.getUTCFullYear(), dateInCST.getUTCMonth(), dateInCST.getUTCDate());

console.log(onlyDateInCST);

我在 +5:30,即 IST 时区。

在通过提供年月日创建日期期间, Node js 将其视为 IST 并自动扣除 -5:30。

Node js 通过考虑服务器时区的日期自动将日期转换为 UTC。但是在浏览器中,我得到了没有时间的正确 CST 日期。

示例:

var today = new Date(2017, 2, 7);
console.log(today);

日期应为 2017-03-07T00:00:00.000Z。但是 Node js从这个日期开始扣除UTC之间的服务器时区差异,即+5:30日期对象变为 2017-03-06T18:30:00.000Z

为什么上述代码在 Node js 中与浏览器中的行为不同。有什么解决方法吗?

编辑:

var date = new Date();
function createDateAsUTC(date) {
return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()));
}
console.log(date);
console.log(createDateAsUTC(date));

NodeJs 输出:

2017-03-08T12:28:16.381Z

2017-03-08T17:58:16.000Z

浏览器输出:

2017 年 3 月 8 日星期三 17:58:17 GMT+0530(印度标准时间)

2017 年 3 月 8 日星期三 23:28:17 GMT+0530(印度标准时间)

Node js 行为和浏览器之间存在差异。服务器(本地)时间是 17:58。

new Date(?,?,?,?,?,?) 和 new Date(Date.UTC(?,?,?,?,?,?)) 有什么区别?

最佳答案

Nodejs 代表 ISO 8601格式

Z is the zone designator for the zero UTC offset. "09:30 UTC" is therefore represented as "09:30Z" or "0930Z"

在你的情况下

var today = new Date(2017, 2, 7);

2017-03-06T18:30:00.000Z 它有效,因为它以 UTC 表示。

可能是nodejs默认的日期格式是yyyy-mm-ddThh:mm:ss.fffZ,如果你把它改成yyyy-mm-ddThh:mm:ss.fffZ+| -hh:mm 它将显示为 2017-03-07T00:00:00.000+05:30


更新

我运行了与你相同的日期和时区,在我的机器上它没有显示 ISO 8601 格式,它只显示了 toISOString() 方法

var today = new Date(2017, 2, 7);
console.log(today); --> Tue Mar 07 2017 00:00:00 GMT+0530 (India Standard Time)
console.log(today.toISOString()); --> 2017-03-06T18:30:00.000Z

为了复制我添加了 moment.js

var today = new Date(2017, 2, 7);
console.log(moment(today).format()); --------> 2017-03-07T00:00:00+05:30
console.log(moment(today).utc().format()); --> 2017-03-06T18:30:00Z

关于javascript - Node js 中的新日期(年、月、日)自动转换为 UTC 时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42631017/

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