如何在创buildJavaScriptdate时指定时区?

我有一个倒数计时器,倒计时到2014年1月1日上午8点。

我正在使用下面的代码来设置date:

var futureDate = new Date(2014, 0, 1, 8, 0, 0, 0); 

这工作,但我想进一步,并将其设置为一个特定的时区。 在我的情况下,UTC -7。

我已经阅读了这个答案 ,说使用:

 new Date(Date.UTC(year, month, day, hour, minute, second)) 

但我感到困惑的是我如何将时区设置为UTC -7,而我在线阅读的内容只会让我更加困惑。

有人可以解释Date.UTC是如何工作的,以及如何设置时区,以便我的倒计时时钟正在根据指定的时区倒计时?

注意:任何答案必须是客户端唯一的代码。

有人可以解释一下Date.UTC是如何工作的

Date.UTC为所提供的年份,月份,date等创build一个没有任何偏移量的时间值。 因此,如果客户机设置为UTC +05:00,则:

 var d = new Date(Date.UTC(2013, 11, 30, 12, 0, 0)); 

将于2013年12月30日在格林威治创build一个相当于中午的date。 提醒date将打印当地时间(假设+5:00),相当于2013-12-30T17:00:00 + 05:00。

以及如何设置时区,以便我的倒数计时器根据指定的时区进行倒计时?

您不能设置时区,但是您可以使用UTC值创builddate对象,调整偏移量的小时和分钟,然后使用UTC方法获取倒计时的date和时间分量。

例如

 function z(n){return (n < 10? '0' : '') + n;} var d = new Date(Date.UTC(2012, 11, 30, 12, 0, 0)); d.setUTCHours(d.getUTCHours() - 7); alert(d.getUTCFullYear() + '-' + z(d.getUTCMonth() + 1) + '-' + z(d.getUTCDate()) + 'T' + z(d.getUTCHours()) + ':' + z(d.getUTCMinutes()) + ':' + z(d.getUTCSeconds()) + '-07:00' ); // 2012-12-30T05:00:00-07:00 

如果使用非UTC方法,则本地偏移将影响结果。