我在GMT时区偏移calcultaion时遇到了一些意想不到的结果。
我正在使用ExtJS日期类来帮助计算消息从GMT 0服务器到达当前GMT +8的用户本地计算机的时间。
我认为如果我计算了偏移量,然后将其添加到时间戳中以秒为单位,那么我可以使用以下计算给我一个字符串来格式化我喜欢。
var d = new Date((stamp + offset) * 1000);
戳是以秒为单位的日期/时间,也就是偏移量。
这会返回我所在位置的当前日期和时间,但加上8小时。如果我没有添加偏移量,那么时间是正确的。
方法new Date()会自动给我当地时间的日期/时间吗?
答案 0 :(得分:5)
只需插入包含千分之一秒的unix时间戳。 unix时间戳应该是UTC 0,javascript将查找客户端计算机的本地时区并计算它。
正如您在this链接后面看到的那样,有一些UTC方法可以为您提供没有本地时间偏移的时间。也许这可能是你搜索的内容(如果你真的想自己设置时区)。
编辑:
new Date().getTimezoneOffset()
会显示本地时区和utc之间的区别,但您应该考虑使用utc方法。
答案 1 :(得分:4)
只需添加它,以防其他人看到后者。可能是错的,但可以满足我的需要。
我将用户的偏移量存储在几秒钟内。
以秒为单位的偏移量会更改(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);
答案 2 :(得分:1)
从它的外观来看,stamp
是您当地的时间,包括时区偏移量。 JavaScript不知道服务器的时区,它(主要)是客户端语言。