【问题标题】:Moment Timezone : I don't understand how default timezones work时刻时区:我不明白默认时区是如何工作的
【发布时间】:2015-07-25 02:35:32
【问题描述】:

假设现在是美国/丹佛当地时间上午 10:00。当我在时刻时区设置默认时区时:

moment.tz.setDefault("America/Chicago");

当前时间对象打印在正确的时区,美国芝加哥:

moment().toString(); // returns 11:00am

但是,当我解析日期时,例如:

// exampleTime equal to 9:05am, already in America/Chicago
var parsedTime = moment(exampleTime, "HH:mm")

它似乎需要日期,在当地时区(“美国/丹佛”)解析它,然后将其“转换”为美国/芝加哥。所以,当我:

parsedTime.toString(); //prints ~10:05am

它会打印出比应有的时间早一个小时的时间。

每次解析时都必须指定时区吗?为什么不在默认时区解析?

【问题讨论】:

  • 如果你想弄乱时区,你应该改用moment.tz()
  • 我正在使用 moment.tz 来指定默认时区。我想知道为什么解析日期会在本地时区解析并转换,而不是在默认时区解析。
  • 好吧,试试moment.tz(exampleTime, "HH:mm", 'America/Chicago'),看看时间是否不变。
  • 这就是我目前正在做的事情,但这似乎违背了拥有默认时区的目的。

标签: javascript timezone momentjs


【解决方案1】:

您使用正确,只是遇到了一个错误。已经登录this issue,还有pending fix here

【讨论】:

    猜你喜欢
    • 2015-07-01
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 2016-10-03
    • 2022-01-24
    • 1970-01-01
    • 2011-04-30
    • 2023-04-03
    相关资源
    最近更新 更多