Date.toLocaleDateString格式问题

时间:2019-01-13 17:09:50

标签: javascript node.js date

Date.toLocaleDateString()在运行nodejs(v10.15.0)的Windows 10笔记本电脑上无法作为Discord.js机器人的服务器运行。它显示的是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

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

是什么问题?是因为有nodejs吗?还是js.do网站??如本线程所述:Date.toLocaleDateString() not working on Nodejs v10.14.2,但我认为问题略有不同。

2 个答案:

答案 0 :(得分:2)

显然,默认情况下,nodejs仅包含here中所述的美国语言环境,因此采用mm / dd / yyyy格式。

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

安装后,我运行了npm install because of this,然后在命令行中看到了这一点:

 For package.json:
{"scripts":{"start":"node --icu-data-dir=node_modules\\full-icu YOURAPP.js"}}

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

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

答案 1 :(得分:1)

我能够重现此问题,如果您的代码允许,请尝试dateformat

In [423]: recs.__array_interface__
Out[423]: 
{'data': (37584304, False),
 'strides': None,
 'descr': [('', '<i8')],
 'typestr': '<i8',
 'shape': (2, 2),
 'version': 3}

In [424]: x.__array_interface__
Out[424]: 
{'data': (37614336, False),
 'strides': None,
 'descr': [('', '<i8')],
 'typestr': '<i8',
 'shape': (2, 2),
 'version': 3}

$ npm install dateformat