【问题标题】:How to convert a UTC time to local time如何将 UTC 时间转换为本地时间
【发布时间】:2014-07-15 21:06:03
【问题描述】:

您好,我正在将 UTC 时间从服务器传送到客户端的浏览器。时间显示正确,但时区没有。以下是时间的显示方式:

2014 年 7 月 15 日星期二 19:35:00 GMT-0500

日期和时间正确,但时区不正确。我只想将 GMT -0500 更改为 UTC。当我将其更改为 UTC 时,我可以将其转换为本地时间。

【问题讨论】:

标签: javascript timezone


【解决方案1】:

即使您收到的是 UTC 时间,javascript 对象也将始终在控制台中显示为本地时间。例如:

var date = new Date(1405458751062);

为我输出这个:

Tue Jul 15 2014 17:12:31 GMT-0400

您必须获取该日期对象并输出特定属性。

例如 UTC:

date.getUTCFullYear() + "-" + (date.getUTCMonth() + 1) + "-" + date.getUTCDate() + " " + date.getUTCHours() + ":" + date.getUTCMinutes();

输出:

2014-7-15 21:12

或当地时间:

date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes();

输出:

2014-7-15 17:12

在我看来,您似乎错误地解析了您的日期,因为 19:35 还没有到来。您需要确保正确解析您的日期,以便当您将日期对象输出到控制台(例如console.log(date))时,它将以浏览器的本地时间显示日期。从那里您必须使用与上述类似的方法以 UTC 格式正确格式化日期。


我建议使用Moment.js。它让生活变得轻松:

var date = moment(1405458751062); 
date.toString();         // returns Tue Jul 15 2014 17:12:31 GMT-0400
date.utc().toString();   // returns Tue Jul 15 2014 21:12:31 GMT+0000
date.local().toString(); // returns Tue Jul 15 2014 17:12:31 GMT-0400

该库也使格式化日期变得非常容易。

【讨论】:

  • 小心。如果您沿着从各个部分构建字符串的路径,您需要将 1 添加到月份字段,因为 Date 对象使用月份 0-11 而不是 1-12。您可能还想对每个字段进行零填充。 +1 for the moment.js 解决方案。
  • @MattJohnson 已修复。我忘了那几个月在 javascript 中是零索引的(可能是因为我已经用 moment.js 格式化日期很长时间了哈哈)
猜你喜欢
  • 2018-07-27
  • 1970-01-01
  • 2013-08-13
  • 2014-07-18
  • 2021-02-04
  • 2010-09-15
  • 2011-05-01
相关资源
最近更新 更多