Javascript:您能否将当地时间转换为GMT,如新的日期(localTime +' GMT')?

时间:2016-10-03 23:08:11

标签: javascript date datetime iso gmt

我目前var dateNow'10 1 2016'var timeNow'05:15:50',并且能够像var dateTimeNow = Date(dateNow + timeNow + ' UTC');

那样转换为UTC

现在想将其转换为GMT,那么只需将' UTC'更改为' GMT'即可吗?那么,var dateTimeNow = Date(dateNow + timeNow + ' GMT');

1 个答案:

答案 0 :(得分:0)

如果您的日期类似于“10 1 2016”(我猜是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,您必须知道当地时间的时区偏移,否则您没有基准来调整它。

将当地日期(如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。