Moment TimeZone返回正确的时区,但拼写错误

Moment Timezone returns correct timezone but with wrong spelling(Moment TimeZone返回正确的时区,但拼写错误)
本文介绍了Moment TimeZone返回正确的时区,但拼写错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用MomentJS时区。但是,当我执行moment.tz.guess()操作时,它返回拼写错误的时区。

const timezone = moment.tz.guess();
console.log(timezone); //returns Asia/Katmandu instead of Asia/Kathmandu
是的,我可以只编辑js文件并更正拼写,但恐怕其他国家也是如此。由于我不知道,这可能会降低用户体验!

此行为是预期的吗?或者有什么方法可以修复它吗?

查看: Correct Timezone List [Moment] [Javascript] [PHP] [Internationalization API]

推荐答案

我使用的是Moment 2.2.22和0.5.17数据,以下是我找到的结果。

var timezones = moment.tz.names();
console.log(moment.tz.guess());
for (var i = 0; i < timezones.length; i++) {
  var node = document.createElement("LI");
  var textnode = document.createTextNode(timezones[i]);
  node.appendChild(textnode);
  document.getElementById("mm").appendChild(node);

}
#mm span {
  width: 100%;
}
<script src="https://momentjs.com/downloads/moment.min.js"></script>
<script src="http://momentjs.com/downloads/moment-timezone-with-data.min.js"></script>
<ul id='mm'></ul>

我的结果显示,同一时区有两个名称(加德满都和加德满都),它们写成类似Asia/Kathmandu|Asia/Katmandu(一个更新后第二个已过时)。稍微研究了一下,我发现这是因为过时的时区和Chrome行为,这个问题不会在Firefox或任何其他浏览器上发生。

开发人员也不会解决此问题,因为这不会产生任何问题。这是一个已知的Chrome行为,会导致Moment做出错误的猜测。时刻开发团队对开发变通方法不感兴趣。有关详细信息,请参阅here。

所以我建议您使用字符串,并根据您的需要和上一个答案中建议的格式设置它的格式。

注意:

请同时在其他浏览器中测试该示例。

这篇关于Moment TimeZone返回正确的时区,但拼写错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)