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 许可协议
如果您想要与浏览器中的完全相同,只需通过调用 toString 方法将其转换为字符串,如下所示。然后您将获得预期的正确日期。