我在比较代码中的区域值时遇到问题,据我了解,这是一个错误。
我的要求:将我们从时刻获得的时区与我在数组中的时区进行比较并将其设置在某个地方。我使用moment.tz.guess()从 moment.js 获取值,并将其与本地数组中存在的时区值/名称进行比较。
面临的问题:仅在 Google Chrome 浏览器的情况下,我将moment.tz.guess()的值作为Asia/Calcutta而在 Firefox 和 IE/Edge 的情况下,我得到Asia/Kolkata。
我的本地数组的值/名称为 Asia/Kolkata,因此,我无法比较 Chrome 浏览器中的值,但我能够在其他提到的浏览器中进行正确比较。
这是一个特定于时区的问题,因为早期的亚洲/加尔各答是亚洲/加尔各答。
另外,我正在使用最新版本的 moment.js 并在我的系统中安装了最新版本的浏览器,所以我不确定问题出在哪里。另外,我使用 angularJS 1.6 作为 UI 的主要框架。
任何帮助,将不胜感激。
下面是我身边实际问题的一个简单的 Fiddle,即 moment.tz.guess()
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.11/moment-timezone-with-data-2010-2020.min.js"></script>
<script>
var timezone = moment.tz.guess();
alert(timezone);
http://jsfiddle.net/wcu21kr5/3125/
它在 Chrome vs Firefox (Calcutta vs Kolkata) 中给出了不同的值,正确和最新的 Kolkata
目前,在我的代码中,我所做的是我直接比较了我的数组中的字符串值和我从 moment.tz.guess() 获得的字符串值,然后将它们视为相等然后继续。
这样我的应用程序就可以工作了,但是对于特定情况,这是一种硬代码检查,如果其他时区城市名称发生变化怎么办?每次添加新城市都不是一个好的选择