我试图将GMT时间转换为用户的当地时间。
我从服务器获取的时间格式为:2015-05-20 18:00:00
GMT
我只想展示这样的小时和分钟:20:00
我想使用这个看似非常简单的解决方案,但我不知道如何使我的格式与此相同
var date = new Date('5/21/2015 18:52:48');
date.toString();
答案 0 :(得分:1)
我从服务器获取的时间格式为:
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
然后,只需将您获得的hours
和minutes
值格式化为所需的hh:mm
字符串。
注意:字符串末尾的Z
很重要。不幸的是,如果被解析的字符串没有时区,那么ES5规范在它(它们在ES6中修复它)方面会有很大的错误。有些引擎做的是规范所说的,有些做了应该所说的那些(并且ES6规范将会说),不幸的是,这意味着现在,你不能相信如果字符串上没有时区,浏览器会做什么。
答案 1 :(得分:-1)
我只需添加" UTC"
var date = new Date('2015-05-20 15:00:00 UTC');
alert(date.getHours());
alert(date.getMinutes());
答案 2 :(得分:-1)
浏览器中的新Date()返回用户时区(机器时区)中的日期对象。 只需要将ISO格式的GMT日期传递给日期功能。因此它会将其视为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