我在计算GMT时区偏移量时遇到了一些意想不到的结果。
我正在使用ExtJS日期类来帮助计算消息从GMT 0到达用户本地机器的时间,当前为GMT +8。
我认为如果我计算偏移量,然后将其添加到以秒为单位的时间戳中,那么我可以使用以下计算给我一个字符串来格式化。
var d = new Date((stamp + offset) * 1000);
戳是以秒为单位的日期/时间,偏移量也是如此。
返回我所在位置的当前日期和时间,但加上8小时。如果我没有添加偏移量,那么时间是正确的。
方法new Date()是否自动给出本地时间的日期/时间?
只是添加这个,以防它帮助别人以后看。可能是错误的,但为我需要的工作。
我将用户的偏移量以秒为单位存储。
以秒为单位的偏移量更改(offset * 1000)
以确保偏移量在不以秒为单位的情况下转换为毫秒。
function offsetDate(offset){
var d = new Date(new Date().getTime() + (offset * 1000));
var hrs = d.getUTCHours();
var mins = d.getUTCMinutes();
var secs = d.getUTCSeconds();
//simple output
document.write(hrs + ":" + mins + ":" + secs);
只插入包含千分之一秒的Unix时间戳。unix时间戳应该是UTC 0, javascript将查找客户端计算机的本地时区并计算它。
正如你在这个链接后面看到的,有一些UTC方法可以给你没有本地时间偏移的时间。也许这可能是您要搜索的(如果您真的想自己设置时区)。
编辑: new Date().getTimezoneOffset()
将显示本地时区和utc的差异,但您应该考虑使用utc方法。
从它的外观来看,stamp
是您的本地时间,包括时区偏移。JavaScript不知道服务器的时区,它(主要)是一种客户端语言。