moment.js 解析具有严格格式和语言环境的日期
moment.js parse date with strict format and locale
我有一个用例,在该用例中我获取了不同语言环境的日期,并且我正在尝试将它们解析为 RFC2822。
问题是某些语言环境的时刻不能正确解析日期。
例如“24 janv. 2022”不起作用。
日期的语言环境是“fr”-法语,它应该与“ll”格式相匹配。但是我似乎无法正确解析该字符串。
Codepen:https://codesandbox.io/s/sad-swirles-21cf9?file=/src/App.js:53-130(检查控制台)
代码:
const testString = "24 janv. 2022";
const DATE_RFC2822 = "HH:mm MMM DD YYYY";
const parseDate = (date) => {
const locales = [
"en",
"de",
"fr",
"es",
"pl",
"nl",
"it",
"ar",
"cs",
"sk",
"sv",
"zh-cn",
"tr",
"el",
"fi",
"he",
"hi",
"hu",
"ko",
"he"
];
for (let i = 0; i < locales.length; i++) {
let parsedDate = moment(
date,
["D. MMM YYYY", "MMM D, YYYY", "D MMM. YYYY", "D MMMM. YYYY", "ll"],
locales[i],
true
);
if (parsedDate.isValid()) {
parsedDate.locale("en");
return {
success: true,
object: parsedDate,
formatted: parsedDate.format(DATE_RFC2822),
source: date
};
}
}
return {
success: false,
object: "",
formatted: "",
source: date
}
};
问题是您没有正确导入本地化,请查看文档中的 Loading locales in NodeJS 部分。
如果您输入:
,则链接代码有效
import moment from "moment/min/moment-with-locales";
而不是
import moment from "moment";
我有一个用例,在该用例中我获取了不同语言环境的日期,并且我正在尝试将它们解析为 RFC2822。
问题是某些语言环境的时刻不能正确解析日期。 例如“24 janv. 2022”不起作用。
日期的语言环境是“fr”-法语,它应该与“ll”格式相匹配。但是我似乎无法正确解析该字符串。
Codepen:https://codesandbox.io/s/sad-swirles-21cf9?file=/src/App.js:53-130(检查控制台)
代码:
const testString = "24 janv. 2022";
const DATE_RFC2822 = "HH:mm MMM DD YYYY";
const parseDate = (date) => {
const locales = [
"en",
"de",
"fr",
"es",
"pl",
"nl",
"it",
"ar",
"cs",
"sk",
"sv",
"zh-cn",
"tr",
"el",
"fi",
"he",
"hi",
"hu",
"ko",
"he"
];
for (let i = 0; i < locales.length; i++) {
let parsedDate = moment(
date,
["D. MMM YYYY", "MMM D, YYYY", "D MMM. YYYY", "D MMMM. YYYY", "ll"],
locales[i],
true
);
if (parsedDate.isValid()) {
parsedDate.locale("en");
return {
success: true,
object: parsedDate,
formatted: parsedDate.format(DATE_RFC2822),
source: date
};
}
}
return {
success: false,
object: "",
formatted: "",
source: date
}
};
问题是您没有正确导入本地化,请查看文档中的 Loading locales in NodeJS 部分。
如果您输入:
,则链接代码有效import moment from "moment/min/moment-with-locales";
而不是
import moment from "moment";