Date.toLocaleDateString 格式问题

Jef*_*ffo 4 javascript date node.js

Date.toLocaleDateString ()在我运行 nodejs (v10.15.0) 作为discord.js 机器人服务器的 Windows 10 笔记本电脑中不起作用。它显示 mm/dd/yyyy 而不是 dd/mm/yyyy。

我使用“en-GB”作为区域设置的第一个参数,第二个参数作为我想要实现的格式(dd/mm/yyyy)。在https://js.do/中,它显示 dd/mm/yyyy,但不知何故在我的笔记本电脑中它显示为 mm/dd/yyyy,并且它们都使用相同的代码,除了“document.write”之外,我使用“console.log”来显示结果。

let d1 = new Date();
let options = {
  year: 'numeric',
  month: '2-digit',
  day: '2-digit'
};
document.write(d1.toLocaleString('en-GB', options)); // console.log in my laptop
Run Code Online (Sandbox Code Playgroud)

我希望它是 dd/mm/yyyy 格式,因为它采用“en-GB”语言环境,而不是 mm/dd/yyyy 格式。

问题是什么?是因为nodejs吗?或者 js.do 网站?正如此线程中所讨论的:Date.toLocaleDateString() 不适用于 Nodejs v10.14.2,但我认为问题略有不同。

Jef*_*ffo 5

显然,nodejs 默认情况下仅包含 en-US 语言环境,如此处所述因此采用 mm/dd/yyyy 格式。

我按照该问题中targos的建议安装了full-icu模块。

安装后,我npm install 因为这个而运行,然后我在命令行中看到了这个:

 For package.json:
{"scripts":{"start":"node --icu-data-dir=node_modules\\full-icu YOURAPP.js"}}
Run Code Online (Sandbox Code Playgroud)

并相应地编辑了我的启动脚本,它产生了 dd/mm/yyyy 所需的结果。

非常感谢@quirimmo 帮助我评论我的问题!