我以以下格式(例如)获取一个日期作为字符串:
"11/10/2015 10:00:00"
现在是UTC时间。
当我从此字符串创建Date时,它将其视为本地时间:
let time = "11/10/2015 10:00:00";
let date = new Date(time);
console.log(date);
它打印:
"Tue Nov 10 2015 10:00:00 GMT+0200"
(而不是将其视为UTC:“ 2015年11月10日星期二10:00:00”)
我也尝试过moment.js。
有没有什么好方法可以使Date()将字符串视为UTC,而不必在字符串末尾添加“ Z” /“ UTC” /“ + 000”?
最佳答案
您可以使用内置的Date.UTC()
函数来执行此操作。这是一个小功能,它将采用您在原始帖子中给出的格式并将其转换为UTC日期字符串
let time = "11/10/2015 10:00:00";
function getUTCDate(dateString) {
// dateString format will be "MM/DD/YYYY HH:mm:ss"
var [date, time] = dateString.split(" ");
var [month, day, year] = date.split("/");
var [hours, minutes, seconds] = time.split(":");
// month is 0 indexed in Date operations, subtract 1 when converting string to Date object
return new Date(Date.UTC(year, month - 1, day, hours, minutes, seconds)).toUTCString();
}
console.log(getUTCDate(time));