我以以下格式(例如)获取一个日期作为字符串:

"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));

09-10 14:14
查看更多