节点 js 中的新日期(年、月、日)自动转换为 UTC 时区

新手上路,请多包涵
    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 时区。

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

节点 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));

节点输出

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(?,?,?,?,?,?)) 有什么区别?

原文由 Ashis Jena 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 343
1 个回答

如果您想要与浏览器中的完全相同,只需通过调用 toString 方法将其转换为字符串,如下所示。然后您将获得预期的正确日期。

(新日期()).toString();

原文由 Rajasekhar Kunati 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题