初始化时创建一个带有不同时区的 JavaScript Date 对象

4

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

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

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

这里是我的问题的简单示例:

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

现在,如果我们在"05:00 pm"创建事件,则如何在“America/New_york”时区中创建时间为5 pm的日期,

如果我们使用new Date()(假设浏览器位于不同的时区,例如“Asia/Kolkata”),则将其转换为“America/New_york”不会在该时区中获得“5:00 pm”的时间,而是将在该时区中获取“05:00 pm IST”的对应时间,并具有不同的小时和分钟值。

任何建议都将是有用的!

谢谢

1个回答

2

简短回答是你不能。

一个日期对象只是系统时间设置的访问器(因此它将使用本地计算机时区)。您可以使用getTimezoneOffset()减去本地时区来操作日期,或使用setUTCHours()强制指定时间。

请注意,moment.js是处理日期和时区的好选择:http://momentjs.com/


没错,JS不允许你为日期设置时区。 - Ruan Mendes
2
嗨Ribon,我正在使用momentjs,但它不能帮助我们在特定时区创建日期,而是用于将日期转换为不同的时区,我可以使用moment(任何日期)。tz('时区')。format()来获取不同时区的日期字符串或者moment()。utc()以获取UTC值,但对于我提到的上述情况,它们都不正确这就是我提出问题的原因。 - Ramesh Lingappa
另外,我想知道为什么这个问题被标记为重复,那些建议的帖子并没有提供任何创建的方法,而是在询问如何转换时区,但这不是所问问题的答案。 - Ramesh Lingappa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接