使用偏移量计算JavaScript日期时间

时间:2013-01-03 07:00:25

标签: javascript date datetime extjs

我在GMT时区偏移calcultaion时遇到了一些意想不到的结果。

我正在使用ExtJS日期类来帮助计算消息从GMT 0服务器到达当前GMT +8的用户本地计算机的时间。

我认为如果我计算了偏移量,然后将其添加到时间戳中以秒为单位,那么我可以使用以下计算给我一个字符串来格式化我喜欢。

var d = new Date((stamp + offset) * 1000);

戳是以秒为单位的日期/时间,也就是偏移量。

这会返回我所在位置的当前日期和时间,但加上8小时。如果我没有添加偏移量,那么时间是正确的。

方法new Date()会自动给我当地时间的日期/时间吗?

3 个答案:

答案 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不知道服务器的时区,它(主要)是客户端语言。