在初始化期间创建具有不同时区的新的 JavaScript 日期对象.

10 浏览
0 Comments

在初始化期间创建具有不同时区的新的 JavaScript 日期对象.

我看过很多帖子,真的很多,为了找到解决我的问题的方法,但是我找不到,所以决定提出一个问题。

我的问题是如何在不同的时区实际创建一个新的JavaScript日期对象,而不是在本地时区

我知道我们可以创建本地日期对象,并以多种方式将其转换为不同的时区,但我不想转换,我需要在特定的时区中创建。

这是我问题的一个简单例子,

假设用户选择了时区为“America/New_york”,那么在日历页面上显示的所有日期都将以该时区显示。

现在,如果我们在"05:00 pm"创建一个事件,我们如何在"America/New_york"时区中实际创建一个时间为下午5点的日期,

如果我们使用new Date()(假设浏览器的时区不同,比如"Asia/Kolkata"),然后将其转换为"America/New_york",将无法在该时区中获得"5:00 pm",而是会获得该时区中"05:00 pm IST"的对应时间,其小时和分钟值不同。

任何建议将非常有帮助!

谢谢

0
0 Comments

问题的原因是JavaScript的Date对象在初始化时无法设置不同的时区。Date对象只是对系统时间设置的访问器,它将始终使用本地计算机的时区。要在初始化时设置不同的时区,可以通过使用getTimezoneOffset()方法减去本地时区,或者使用setUTCHours()方法强制设置时间。

然而,moment.js是一个处理日期和时区的好的替代方案。moment.js可以在初始化时设置不同的时区,而不仅仅是进行转换。可以使用moment(<任何日期>).tz('时区').format()方法获取不同时区的日期字符串,或者使用moment().utc()方法获取UTC值。这些方法是解决上述问题的正确方法。

同时,要注意的是,为什么这个问题被标记为重复问题,因为那些建议的帖子并没有提供创建日期的方法,而是询问如何转换时区,这不是问题的答案。

0