我有一个特定时区的日期时间作为字符串,我想将其转换为本地时间。但是,我不知道如何在Date对象中设置时区。
例如,我有2013年2月28日东部时间晚上7点,然后我可以
var mydate = new Date();
mydate.setFullYear(2013);
mydate.setMonth(02);
mydate.setDate(28);
mydate.setHours(7);
mydate.setMinutes(00);
据我所知,我可以设置UTC时间或本地时间。但是,如何在另一个时区设置时间呢?
我尝试使用添加/减去UTC的偏移量,但我不知道如何对抗夏令时。我不确定我走的方向是否正确。
如何在javascript中将时间从不同的时区转换为本地时间?
我知道这3年太晚了,但也许它可以帮助其他人,因为除了moment-timezone库之外,我还没有找到任何类似的东西,这与他在这里要求的不完全相同。
我为德国时区做了类似的事情,
这有点复杂,因为日光节约时间和闰年,你有366天。
它可能需要与“isDaylightSavingTimeInGermany”函数做一些工作,而不同的时区在不同的日光节约时间发生变化。
不管怎样,看看这个页面:
https://github.com/zerkotin/german-timezone-converter/wiki
主要方法有:
convertLocalDateToGermanTimezone
convertGermanDateToLocalTimezone
我已经努力记录了它,所以它不会那么令人困惑。
你可以在new Date()上指定一个时区偏移量,例如:
new Date('Feb 28 2013 19:00:00 EST')
or
new Date('Feb 28 2013 19:00:00 GMT-0500')
由于Date存储UTC时间(即getTime返回UTC), javascript将它们转换为UTC时间,当你调用toString之类的东西时,javascript将把UTC时间转换为浏览器的本地时区,并返回本地时区的字符串,即如果我使用UTC+8:
> new Date('Feb 28 2013 19:00:00 GMT-0500').toString()
< "Fri Mar 01 2013 08:00:00 GMT+0800 (CST)"
你也可以使用普通的getHours/Minute/Second方法:
> new Date('Feb 28 2013 19:00:00 GMT-0500').getHours()
< 8
(这个8意味着在时间转换为我的本地时间- UTC+8后,小时数是8。)