【问题标题】:How to convert GMT time to user's Local time Javascript如何将 GMT 时间转换为用户的本地时间 Javascript
【发布时间】:2015-08-03 02:31:50
【问题描述】:

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

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

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

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

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

【问题讨论】:

标签: javascript date gmt


【解决方案1】:

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

如果是这样,您可以轻松地将其转换为 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 规范 说),不幸的是,这意味着现在,你不能如果字符串上没有时区,请相信浏览器会做什么。

【讨论】:

    【解决方案2】:

    我只需要添加“UTC”

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

    【讨论】:

    • 该日期/时间格式可能会或可能不会在任何给定的浏览器中工作,因为它不在规范中,如果它似乎工作,它可能会或可能不会在解析时实际使用 UTC 而不是本地时间。我不会依赖它。
    【解决方案3】:

    浏览器中的new Date() 返回用户时区(机器时区)中的日期对象。 只需要以 ISO 格式将 GMT 日期传递给 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 上不起作用

    【讨论】:

      猜你喜欢
      • 2013-10-29
      • 2010-09-15
      • 2012-08-28
      • 2011-04-23
      • 2013-05-04
      相关资源
      最近更新 更多