我目前var dateNow
为'10 1 2016'
,var timeNow
为'05:15:50'
,并且能够像var dateTimeNow = Date(dateNow + timeNow + ' UTC');
现在想将其转换为GMT,那么只需将' UTC'
更改为' GMT'
即可吗?那么,var dateTimeNow = Date(dateNow + timeNow + ' GMT');
?
答案 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。