function timezone(date=new Date()) {
var timezoneOffset=date.getTimezoneOffset();
var sign=(timezoneOffset<0)?"+":"-";
var minutes=Math.abs(timezoneOffset);
var hours=Math.floor(minutes/60);
minutes=minutes-60*hours;
return sign+("0"+hours).slice(-2)+":"+("0"+minutes).slice(-2);
}
5条答案
按热度按时间myss37ts1#
您可以使用Date对象执行此任务。
现在你有了一个像-120这样的字符串,你可以根据自己的喜好设置格式。你可以除以60得到小时数,然后使用+或push:
一行:
编辑:因为你似乎有问题,我给你一个代码示例,你可以测试。
我不处理00:XX以防它们存在。
7rtdyuoh2#
我创造了一个函数...
你可以传递一个
Date
对象,如果你不这样做,就会创建一个对象。timezoneOffset
以整数分钟为单位:格林尼治标准时间以东=负值,以西=正值。sign
是偏移的相反值。minutes
abs
=我们已经得到了符号,让我们来处理绝对值。hours
-60分钟的整数倍。minutes
-提醒你减去60个小时是什么。可以用%
来做,这是一个偏好的问题。return
-您可以通过将
date.getTimezoneOffset()
替换为数字来手动测试不同的timezoneOffset
值。fjaof16o3#
下面是一个可能的解决方案:
请注意,并非所有时区都以小时结束。有些国家使用半小时时区,如+03:30。
wpcxdonn4#
这似乎是工作...
ukxgm1gy5#
下面是我的解决方案:不要自己做除法来得到小时数,而只需使用date对象中已有的功能: