将Javascript日期对象设置为午夜而不基于用户计算机日期

时间:2011-08-15 14:03:05

标签: javascript datetime timezone

无论用户的计算机日期如何,我都需要将日期和时间设置为午夜12点。我正在创建一个国际会议策划者来抵消时区以开会。

我有它的工作,但我现在需要编码时区的差异。如果我使用新的日期,它会根据用户的计算机给我时间。例如,我的是美国东部。如果我尝试在2011年11月6日进行时区转换,Javascript /计算机将在凌晨2点计算我的时区转换。我不想要这个。

我的真正目标是将会议设置的时区设置为午夜12点(比如阿富汗),然后从那里计算。

所以:

  1. 如何在不作为用户计算机时间的情况下设置午夜12点?

  2. 我可以将12午夜设置为特定时区,而不依赖于用户的计算机时间吗?

  3. 我必须使用Javascript执行此操作,因为不涉及服务器代码。

    由于

2 个答案:

答案 0 :(得分:2)

我想是这样的:new Date(Date.UTC(year, month, day, hour, minute, second))

w3schools Reference

答案 1 :(得分:1)

在格林尼治标准时间创建午夜:

// Note: months are 0-based, so 7 == august
var midnight = new Date( Date.UTC(2011,7,15) );
// Sun Aug 14 2011 18:00:00 GMT-0600 (Mountain Daylight Time)

在另一个时区创建午夜:

var mdt = -6; // Mountain Daylight Time
var midnightMDT = new Date( Date.UTC(2011,7,15,-mdt) );
//-> Mon Aug 15 2011 00:00:00 GMT-0600 (Mountain Daylight Time)

日期对象以用户的本地时区表示,但它们仍代表另一个时区的午夜。

如果您想在另一个时区中表达日期,则需要将日期偏移到该时区(setUTCHours()),然后使用各种getUTC *方法(例如getUTCHours())来构建自己的字符串。