在javascript中使用toLocaleString模块得到错误的结果



在javascript中使用toLocaleString方法时得到错误的结果

当前月产量= M01,预期月产量= 1月

有人遇到过同样的问题并解决了吗?

const milisecond = 1614237860725;
const expiryDate = new Date();
expiryDate.setTime(milisecond);
const month = expiryDate.toLocaleString('default', {
month: 'long'
});
console.log(month)

我在这里只是假设(因为您根本没有提到node.js),但是当node.js用"小icu"编译时,您会得到1月份的M01,该icu不包括语言环境数据(除了英语)。

在文档中:https://nodejs.org/api/intl.html#intl_embed_a_limited_set_of_icu_data_small_icu

从文档中引用(查看示例中的注释):

该选项静态地生成针对ICU库的二进制链接,并在可执行节点中包含ICU数据的子集(通常只有英语区域设置)。

只需要ICU库本身的功能,如String.prototype.normalize()和WHATWG URL解析器,在small-icu下得到完全支持。另外还需要ICU语言环境数据的特性,例如Intl。DateTimeFormat,通常只适用于英语区域设置:

const january = new Date(9e8);
const english = new Intl.DateTimeFormat('en', { month: 'long' });
const spanish = new Intl.DateTimeFormat('es', { month: 'long' });
console.log(english.format(january));
// Prints "January"
console.log(spanish.format(january));
// Prints "M01" on small-icu
// Should print "enero"

最新更新