gpt4 book ai didi

javascript - 处理阿拉伯语言区域时正确格式化本地 UTC 日期字符串

转载 作者:行者123 更新时间:2023-12-03 05:39:40 26 4
gpt4 key购买 nike

我正在使用 moment.js 和 moment-timezone 来获取本地 utc 日期字符串。我创建了下面的函数来实现此目的。当尝试在处理阿拉伯语言环境时使用它时,我收到返回的日期无效。

function _getLocalUtcDateString(utcDateString, timezoneId) {
var utcMoment = moment.utc(utcDateString, 'MM/DD/YYYY hh:mm:ss A').format('MM/DD/YYYY hh:mm:ss A');
var localTimeTz = moment.utc(utcMoment).tz(timezoneId).format('MM/DD/YYYY hh:mm:ss A');
return localTimeTz;
}

如果我使用以下参数调用它 _getLocalUtcDateString("11/2/2016 4:45:47 PM", "America/New_York") 并设置 moment.locale(' ar') 它因无效日期而失败。问题似乎出在 utcMoment 上,当 lacale 为阿拉伯语时,该值等于 ١١/٠٢/٢٠١٦ ٠٤:٤٥:٤٧ ٦ ٠٤:٤٥:٤٧ ٦ ,这会导致 moment.utc (utcMoment).tz(timezoneId).format('MM/DD/YYYY hh:mm:ss A'); 失败。

最佳答案

如果您打开控制台,您将看到以下警告消息:

Deprecation warning: value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.

所以问题是您正在尝试解析不是可识别的 ISO 格式的字符串(有关其他信息,请参阅 parsing docs)。

要解决此问题,您只需删除函数第一行中不必要的 format() 即可,如以下工作片段所示:

function _getLocalUtcDateString(utcDateString, timezoneId) {
var utcMoment = moment.utc(utcDateString, 'MM/DD/YYYY hh:mm:ss A');
var localTimeTz = moment.utc(utcMoment).tz(timezoneId).format('MM/DD/YYYY hh:mm:ss A');
return localTimeTz;
}

moment.locale('ar');
var res = _getLocalUtcDateString("11/2/2016 4:45:47 PM", "America/New_York");
console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.16.0/moment-with-locales.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.7/moment-timezone-with-data-2010-2020.min.js"></script>

关于javascript - 处理阿拉伯语言区域时正确格式化本地 UTC 日期字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40596062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com