如何将 GMT 时间转换为用户当地时间 Javascript

How to convert GMT time to user's Local time Javascript

我正在尝试将 GMT 时间转换为用户的本地时间。

我从服务器获取的时间格式是:2015-05-20 18:00:00 GMT

我只想像这样显示小时和分钟:20:00

我想使用这个看起来很简单的解决方案,但我不知道如何使我的格式与此相同

var date = new Date('5/21/2015 18:52:48');
date.toString();

the format of the time i'm getting from the server is : 2015-05-20 18:00:00 GMT

如果是这样,您可以轻松地将其转换为 ES5 和更高版本浏览器 are supposed to support 的格式,例如 2015-05-20T18:00:00Z

var yourString = "2015-05-20 18:00:00";
var dt = new Date(yourString.replace(' ', 'T') + "Z");
var hours = dt.getHours(); // Will be local time
var minutes = dt.getMinutes(); // Will be local time

然后只需将您获得的 hoursminutes 值格式化为所需的 hh:mm 字符串。


注意:字符串末尾的Z很重要。不幸的是,ES5 规范中有一个重大错误(他们正在 ES6 中修复它),如果被解析的字符串上没有时区,引擎应该做什么。有些引擎按照规范说的做,其他引擎按照规范 应该 说的去做(ES6 规范 说),不幸的是,这意味着正确的现在,如果字符串中没有时区,您将无法相信浏览器会做什么。

我只需要添加“UTC”

 var date = new Date('2015-05-20 15:00:00 UTC');
alert(date.getHours());
    alert(date.getMinutes());

浏览器中的新 Date() returns 用户时区(机器时区)中的日期对象。 只需要将 GMT 日期传递给 ISO 格式的 Date 函数。所以它会将其视为 gmt 时间。

var date = new Date('2015-05-21T18:52:48Z');
date.toString();//You will get here date string in local format

您也可以使用 UTC,因为 UTC 和 GMT 是 same

这是前。

var date = new Date('2015-05-21 18:52:48UTC'); //You can use GMT instead UTC
date.toString();//You will get here date string in local format

第一种方法更可取,因为第二种方法在 Internet Explorer 上不起作用