2017-01-17 33 views
0

我相信这个指令应该从UTC正确地转换为CST但好像从UTC转换为中部时间(“美国/芝加哥”)是一个小时关闭使用moment.js

moment.utc('07-18-2013 16:10:11', 'MM-DD-YYYY HH:mm').tz('America/Chicago').format("YYYY-MM-DD HH:mm"); 

它returs 2013-07-18 11:10当应该返回2013-07-18 10:10

我错过了什么吗?

编辑:如果我打印缩写的时区,我得到CDT而不是CST。我如何指定CST?

+0

你导入'与DATAS矩timezone'? – VincenzoC

+0

可能不是,我是新来的时刻,你能把我引向正确的方向吗? – ilovelamp

+0

你可以在[docs](http://momentjs.com/timezone/docs/#/use-it/browser/)中阅读如何使用时刻,基本上你需要导入['moment-timezone-在'瞬间'之后使用-data.js'](https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.11/moment-timezone-with-data-2010-2020.min.js)。 js'。 – VincenzoC

回答

2

你的代码是正确的,正如VincenzoC在评论中指出的那样,当时DST是有效的,这就是为什么你得到了你所做的结果。

您正在使用America/Chicago,意思是字面意思 - 芝加哥时间。它代表了整个美国中部时区。美国没有使用中央时间而没有夏令时的地方,因此要求这样做是无意义的或无效的。

如果你真的没有意味着美国中部时间,你的其他选择是:

  • 选择正确的时区。

    .tz('America/Regina')  // Saskatchewan, Canada  (UTC-6 all year) 
    .tz('America/Tegucigalpa') // Honduras, South America (UTC-6 all year) 
    
  • 使用固定的偏移量而不是时区。 (您不需要的时刻,时区添加的用于此。)

    .utcOffset('-06:00') 
    
+0

完美!现在我明白了。谢谢 :) – ilovelamp