在js中创建一个日期忽略时区

Rob*_*esi 5 javascript timezone date datepicker

在js中是否可以创建一个不受时区影响的日期对象?例如我想设置年份“2015”,月份“03”和日期“31”。

var ex = new Date(2015,3,31);
Run Code Online (Sandbox Code Playgroud)

如果我“打印”这个变量现在它看起来像这样:

Fri May 01 2015 00:00:00 GMT+0200 (ora legale Europa occidentale)
Run Code Online (Sandbox Code Playgroud)

它更改为第二天。有可能避免这种情况吗?如何创建在每个时区始终相同的 Date 对象?

我需要尽快将此行为包含在应用程序中,并且我不能仅使用字符串,因为我们必须使用适用于日期对象的日期选择器插件(Bootstrap)。

提前致谢

tmk*_*ly3 2

是的!如果您使用Date.UTC函数创建所有 Date 对象,那么它们都将相对于标准 UTC 时区,即使用户的浏览器设置了不同的时区。

例如:

var ex = new Date( Date.UTC( 2015, 3, 31 ) );
Run Code Online (Sandbox Code Playgroud)

这将为所有浏览器创建一个 Date 对象,3/31/2015 UTC并且该对象在所有浏览器中保持一致,无论其默认时区如何。

在内部,里面的日期ex仍然会按照用户的本地时区进行转换。因此,如果您从中读取值(例如日期),它将相对于用户的浏览器时间。

因此,如果您需要读取 UTC 时间,您可以执行以下操作:

ex.getUTCYear(); // 2015
ex.getUTCMonth(); // 3
ex.getUTCDate(); // 31
Run Code Online (Sandbox Code Playgroud)

这将为您提供 UTC 时间的值。