2014-01-11 34 views
4

我有与momentjs库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位,因为我只对日期

提前致谢。

回答

3

时区缩写不是唯一的,所以它们不能被分析。你可以将任何非格式字符作为占位符忽略它:

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") 
+0

你提到的“非格式字符”是什么?这是你的例子中的问号吗?我到达这里是因为我想弄清楚在我的字符串中如何处理这个时区缩写(IST)。我想知道现在是否可以用占位符忽略它。 – ThisClark

+0

@ThisClark - 确实如此。请注意我提到的几点。由此产生的矩对象不会意识到时区。 –

+0

谢谢。关于您不知道时区的警告,请考虑以下示例:'Wed Jan 01 2014 05:34:53 GMT + 0530(IST)'。在这个例子中,GMT + 0530是时区,对吗?所以(IST)实际上是多余的......? – ThisClark