【问题标题】:MomentJs and Timezone AbbreviationsMomentJs 和时区缩写
【发布时间】:2014-01-11 17:42:04
【问题描述】:

momentjs 库有问题

线

moment("Mon Oct 14 01:00:00 GMT 2013")  parses correctly 

但线

moment("Mon Oct 14 01:00:00 BST 2013")  throws an invalid date

我尝试构建格式字符串,但我认为我需要的 zz 格式已被弃用,有没有办法让它完全跳过 BST/GMT 位,因为我只对日期感兴趣

提前致谢。

【问题讨论】:

    标签: momentjs


    【解决方案1】:

    时区缩写不是唯一的,因此无法解析。您可以通过将任何非格式字符作为占位符来忽略它:

    moment("Mon Oct 14 01:00:00 BST 2013","ddd MMM DD HH:mm:ss ? YYYY")
    

    但您应该知道,忽略它,您将假设运行代码的计算机的本地时区。将您的计算机设置为另一个时区并在此呼叫.format(),您就会明白我的意思了。

    也许您不关心时区,只是想将其重新格式化为其他内容。这很好,但是如果您提供的日期由于计算机本地时区的夏令时转换而无效怎么办?您的浏览器将根据您运行的浏览器向后或向前跳过。为避免这种情况,您应该使用 UTC 而不是本地时间。即使您的输入值完全来自其他时区,在 UTC 中工作也将确保它不会被破坏。

    moment.utc("Mon Oct 14 01:00:00 BST 2013","ddd MMM DD HH:mm:ss ? YYYY")
    

    【讨论】:

    • 你提到的“非格式字符”是什么?像您的示例中那样,它是一个问号吗?我来到这里是因为我试图弄清楚如何处理我的字符串中的这个时区缩写 (IST)。我现在想知道是否可以用占位符忽略它。
    • @ThisClark - 是的,完全正确。请注意我提到的几点。生成的时刻对象将不知道时区。
    • 谢谢。关于不知道时区的警告,请考虑以下示例:Wed Jan 01 2014 05:34:53 GMT+0530 (IST)。在这个例子中,GMT+0530 是时区,对吧?所以(IST)实际上是多余的......?
    • @ThisClark GMT+0530 是时区偏移量 - 这有助于唯一地识别时间点。因此,除非您正在修改时间戳(加/减等),否则您不需要 (IST) 部分。您甚至不需要?,因为它位于字符串的末尾。只需这样做:moment.parseZone("Wed Jan 01 2014 05:34:53 GMT+0530 (IST)","ddd MMM DD YYYY HH:mm:ss [GMT]ZZ").
    猜你喜欢
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 2013-04-02
    • 1970-01-01
    • 2021-09-07
    相关资源
    最近更新 更多