【问题标题】:Create New JavaScript Date Object With Different Timezone During Initialization [duplicate]在初始化期间创建具有不同时区的新 JavaScript 日期对象 [重复]
【发布时间】:2014-01-21 16:19:52
【问题描述】:

我已经看过很多,真的很多帖子来找出我的问题的解决方案,但我无法得到它,所以决定创建一个问题。

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

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

这是我的问题的简单示例,

假设用户选择了“美国/纽约”时区,因此日历页面中的所有日期都将显示在该时区中。

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

如果我们使用 new Date()(假设浏览器在不同的时区,比如“Asia/Kolkata”),那么将其转换为 “America/New_york” 将不会得到“5:00pm”该时区,相反,它将在该时区获得“05:00 pm IST”的相应时间,该时区将具有不同的小时和分钟值。

任何建议都会有所帮助!

谢谢

【问题讨论】:

    标签: javascript date datetime calendar momentjs


    【解决方案1】:

    简短的回答是你不能。

    Date 对象只是系统时间设置的访问器(因此无论如何它都会使用本地计算机时区)。然后,您可以通过使用 getTimezoneOffset() 减去本地时区或使用 setUTCHours() 强制时间来操作日期。

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

    【讨论】:

    • 没错,JS 不允许你为 Date 设置时区
    • 嗨 Ribon,我正在使用 momentjs,但它不会帮助我们在时区创建日期,而是用于将日期转换为不同的时区,我可以使用 moment(任何日期).tz('timezone').format() 来获取不同的时区日期字符串或 moment().utc() 来获取 utc 值,但是对于我提到的上述情况,它们都不正确yi 提出了一个问题
    • 另外,我可以知道为什么这个问题被标记为重复,那些建议的帖子没有告诉任何创建方式,而是那些要求转换为时区的帖子,但这不是问题的答案问,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多