Javascript myDate.ToLocalString()的格式不适用于英语以外的任何其他语言
我目前正在向电子邮件模板发送日期,我需要根据收件人的语言设置这些日期的格式。 我正在使用toLocaleString()函数,它对英语很有吸引力,但对我尝试过的其他语言却没有 我尝试使用moment或luxon格式化日期,但我猜要么我的代码有点错误,要么它们都依赖于vanilla toLocaleString()函数,因为我遇到了相同的问题 my.js文件:Javascript myDate.ToLocalString()的格式不适用于英语以外的任何其他语言,javascript,node.js,date,localization,Javascript,Node.js,Date,Localization,我目前正在向电子邮件模板发送日期,我需要根据收件人的语言设置这些日期的格式。 我正在使用toLocaleString()函数,它对英语很有吸引力,但对我尝试过的其他语言却没有 我尝试使用moment或luxon格式化日期,但我猜要么我的代码有点错误,要么它们都依赖于vanilla toLocaleString()函数,因为我遇到了相同的问题 my.js文件: let options = { weekday: 'long', year: 'numeric', month: 'long', d
let options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
return email.send({
template: 'file-expiration',
message: {
to: to,
},
locals: {
fileUuid: fileUuid,
expireAt: expireAt.toLocaleString('fr-FR', options),
locale: 'fr',
},
});
我的.pug文件:
= `${t('mail.file_expiration.line_1', {name: `${name}`, expireAt: `${expireAt}`})}`
预期:
- 与en US:2019年9月22日(星期日)
- 与fr:2019年9月22日迪曼奇
- 与en US:2019年9月22日(星期日)
- 带fr fr:2019 M09 22,太阳
提前感谢感谢发表评论的人,特别是@VLAZ和@User862,因为他们帮助我找到了解决方案 他们的评论帮助我理解了我的问题来自于我的节点安装,它是用“en-US”语言环境构建的 我发现: 它通过简单地使用polyfill解决了所有问题
非常感谢 得到一个不同但仍然不正确的结果-使用您的日期和选项,它返回2019年9月22日星期日,即使该语言作为
fr
传入。Firefox使用与Chrome相同的代码返回“dimanche 2019年9月22日”。因此,我唯一的猜测是节点环境必须以某种方式配置更多的区域设置。没有可靠的方法可以在不询问用户的情况下确定用户的首选语言。即使这样,你也不知道他们喜欢的日期格式,所以也可以问一下。过去,允许用户为首选语言和格式设置首选项是很常见的,但由于某些原因,现在似乎已不再使用简单的系统。我觉得定位不令人满意,几乎毫无用处。它假设每个使用特定语言的人都想要特定格式的日期,这在现实中是不被支持的。希望这些有帮助,