是否可以在js中创建一个不受时区影响的日期对象? 例如,我想设置年份" 2015",月份" 03"和那天" 31"。
var ex = new Date(2015,3,31);
如果我"打印"这个变量现在看起来像这样:
Fri May 01 2015 00:00:00 GMT+0200 (ora legale Europa occidentale)
它会改变到第二天。可以避免吗?如何创建在每个时区始终相同的Date对象?
我需要在应用程序asap中包含此行为,因为我们必须使用与日期对象一起使用的datepicker插件(Bootstrap),因此我无法使用Strings。
提前致谢
答案 0 :(得分:0)
简短的回答是你不能。
Date对象只是系统时间设置的访问者(因此它将使用本地计算机时区)。然后,您可以通过使用getTimezoneOffset()减去本地时区来操纵日期,或者使用setUTCHours()强制执行时间。
但是,如果您只能通过appcation欢迎一个TimeZone,则可以使用moment.js在该特定时区获取日期时间:
moment().tz("America/Los_Angeles").format();
答案 1 :(得分:0)
是的!如果使用Date.UTC函数创建所有Date对象,则它们都将相对于标准UTC时区,即使用户的浏览器设置了不同的时区。
例如:
var ex = new Date( Date.UTC( 2015, 3, 31 ) );
这将为3/31/2015 UTC
创建一个Date对象,并在所有浏览器中保持一致,无论其默认时区如何。
在内部,ex
内的日期仍会在用户的本地时区内转换。因此,如果您从中读取值,请说出日期,它将相对于用户的浏览器时间。
因此,如果您需要以UTC格式读取时间,可以执行以下操作:
ex.getUTCYear(); // 2015
ex.getUTCMonth(); // 3
ex.getUTCDate(); // 31
这将以UTC时间为您提供值。