Javascript: new Date(localTime + 'GMT') 你能像这样把你的本地时间转换成格林威治标准时间吗?

Javascript: Can you convert your local time to GMT like so, new Date(localTime + 'GMT')?

我目前有一个 var dateNow 作为 '10 1 2016'var timeNow 作为 '05:15:50' 并且能够像这样转换为 UTC var dateTimeNow = Date(dateNow + timeNow + ' UTC');

现在想将其转换为 GMT,那么将 ' UTC' 更改为 ' GMT' 就这么简单吗?就像,var dateTimeNow = Date(dateNow + timeNow + ' GMT');?

如果您有一个像“2016 年 10 月 1 日”(我猜是 2016 年 1 月 10 日)这样的日期和一个像“05:15:50”这样的时间,那么您可以在时区中为该时间创建一个日期作为 ISO 8601 格式字符串的零偏移量:“2016-01-10T15:15:50Z”或“2016-01-10T15:15:50+0000”。

ISO 8601 扩展格式字符串应该在现代实现中被正确解析,但是一般来说,使用 Date 构造函数(或 Date.parse,它们等效于解析)解析字符串并不是一个好主意,因为实施中的差异。如果你只有一种格式,它可以用几行来解析。或者,使用具有解析器和格式化程序的众多 Date 库之一,并记住始终为解析器提供您希望它解析的字符串的格式。

本地时间转成UTC时间,必须要知道本地时间的时区偏移量,否则无从调整。

到 "convert" 本地日期,例如 2016 年 1 月 10 日 05:15:50 到 UTC(其中 "local" 是主机系统时区设置的任何值)很简单:

var d = new Date(2016,0,10,5,15,50);
console.log('Local: ' + d.toLocaleString() +
            '\nUTC: ' + d.toISOString()); 

请注意,toLocaleString 完全依赖于实现,通常会忽略浏览器和系统设置,并在不同的实现中产生不同的结果。

这允许主机考虑当前系统时区设置并在创建日期时应用它们。 ECMAScript Date 对象具有基于 UTC 的时间值,因此它们本质上是 UTC。