在 js 中创建一个忽略时区的日期
Create a Date in js ignoring timezone
是否可以在js中创建不受时区影响的日期对象?
例如我想设置年“2015”,月“03”和日“31”。
var ex = new Date(2015,3,31);
如果我"print"这个变量现在看起来像这样:
Fri May 01 2015 00:00:00 GMT+0200 (ora legale Europa occidentale)
改为第二天。有可能避免这种情况吗?我如何创建一个在每个时区都相同的日期对象?
我需要尽快在应用程序中包含此行为,我不能只使用字符串,因为我们必须使用日期对象插件 (Bootstrap)。
提前致谢
简短的回答是你不能。
Date 对象只是系统时间设置的访问器(因此它无论如何都会使用本地计算机时区)。然后,您可以通过使用 getTimezoneOffset() 减去本地时区或使用 setUTCHours() 强制时间来操纵日期。
但是,如果您的应用程序只能欢迎一个时区,您可以使用 moment.js:
获取该特定时区的日期时间
moment().tz("America/Los_Angeles").format();
是的!如果您使用 Date.UTC 函数创建所有 Date 对象,那么它们都将相对于标准 UTC 时区,即使用户的浏览器设置了不同的时区。
例如:
var ex = new Date( Date.UTC( 2015, 3, 31 ) );
这将为 3/31/2015 UTC
创建一个日期对象,并在所有浏览器中保持一致,无论其默认时区如何。
在内部,ex
内的日期仍将转换为用户的本地时区。因此,如果您从中读取值,比如日期,它将与用户的浏览器时间相关。
因此,如果您需要以 UTC 格式读取时间,您可以这样做:
ex.getUTCYear(); // 2015
ex.getUTCMonth(); // 3
ex.getUTCDate(); // 31
这将为您返回 UTC 时间的值。
是否可以在js中创建不受时区影响的日期对象? 例如我想设置年“2015”,月“03”和日“31”。
var ex = new Date(2015,3,31);
如果我"print"这个变量现在看起来像这样:
Fri May 01 2015 00:00:00 GMT+0200 (ora legale Europa occidentale)
改为第二天。有可能避免这种情况吗?我如何创建一个在每个时区都相同的日期对象?
我需要尽快在应用程序中包含此行为,我不能只使用字符串,因为我们必须使用日期对象插件 (Bootstrap)。
提前致谢
简短的回答是你不能。
Date 对象只是系统时间设置的访问器(因此它无论如何都会使用本地计算机时区)。然后,您可以通过使用 getTimezoneOffset() 减去本地时区或使用 setUTCHours() 强制时间来操纵日期。
但是,如果您的应用程序只能欢迎一个时区,您可以使用 moment.js:
获取该特定时区的日期时间moment().tz("America/Los_Angeles").format();
是的!如果您使用 Date.UTC 函数创建所有 Date 对象,那么它们都将相对于标准 UTC 时区,即使用户的浏览器设置了不同的时区。
例如:
var ex = new Date( Date.UTC( 2015, 3, 31 ) );
这将为 3/31/2015 UTC
创建一个日期对象,并在所有浏览器中保持一致,无论其默认时区如何。
在内部,ex
内的日期仍将转换为用户的本地时区。因此,如果您从中读取值,比如日期,它将与用户的浏览器时间相关。
因此,如果您需要以 UTC 格式读取时间,您可以这样做:
ex.getUTCYear(); // 2015
ex.getUTCMonth(); // 3
ex.getUTCDate(); // 31
这将为您返回 UTC 时间的值。