从服务器我得到一个datetime变量的格式:6/29/2011 4:52:48 PM,它是UTC时间。我想使用JavaScript将其转换为当前用户的浏览器时区。

如何使用JavaScript或jQuery来做到这一点?


当前回答

对我来说,这很有效

if (typeof date === "number") {
  time = new Date(date).toLocaleString();
  } else if (typeof date === "string"){
  time = new Date(`${date} UTC`).toLocaleString();
}

其他回答

tl;dr (new Date('6/29/2011 4:52:48 PM UTC')).toString()

源字符串必须指定时区或UTC。

一行程序:

(new Date('6/29/2011 4:52:48 PM UTC')).toString()

结果在我的一个web浏览器:

"Wed Jun 29 2011 09:52:48 GMT-0700 (Pacific Daylight Time)"

这种方法甚至适当地选择标准/日光时间。

(new Date('1/29/2011 4:52:48 PM UTC')).toString()

结果在我的浏览器:

"Sat Jan 29 2011 08:52:48 GMT-0800 (Pacific Standard Time)"

对我来说,最简单的方法似乎很有用

datetime.setUTCHours(datetime.getHours());
datetime.setUTCMinutes(datetime.getMinutes());

(我认为第一行可以足够了,但有时区,在几个小时的分数)

我在safari/chrome/firefox浏览器中使用这种方法效果很好:

const localDate = new Date(`${utcDate.replace(/-/g, '/')} UTC`);

把这个函数记在脑子里:

<script type="text/javascript">
function localize(t)
{
  var d=new Date(t+" UTC");
  document.write(d.toString());
}
</script>

然后为页面主体中的每个日期生成以下内容:

<script type="text/javascript">localize("6/29/2011 4:52:48 PM");</script>

删除GMT和时区,修改以下行:

document.write(d.toString().replace(/GMT.*/g,""));

这是我正在做的将UTC转换为本地时间:

常量数据日期 = '2020-09-15 07:08:08' const utcDate = new Date(dataDate); const myLocalDate = new Date(Date.UTC( utcDate.getFullYear() utcDate.getMonth(), utcDate.getDate(), utcDate.getHours(), utcDate.getMinutes() )); document.getElementById(“dataDate”).innerHTML = dataDate; document.getElementById(“myLocalDate”).innerHTML = myLocalDate; <p>世界标准时间<p> <p id=“dataDate”></p> <p>本地(格林威治标准时间 +7)<p> <p id=“myLocalDate”></p>

结果:2020年9月15日星期二14:08:00 GMT+0700(印度支那时间)