【问题标题】:Date.toLocaleDateString format issuesDate.toLocaleDateString 格式问题
【发布时间】:2019-06-07 20:01:36
【问题描述】:

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.write”。日志”用于显示结果。

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,但我认为问题略有不同。

【问题讨论】:

  • 在我的 chrome 浏览器上,输出是 13/01/2019 应该是正确的
  • 您是否在这里查看过:github.com/nodejs/node/issues/8500?我认为这正是您遇到的问题。如果在浏览器中我使用 en-US 我确实有与 node.js 中相同的输出
  • 它打印 dd/mm/yyyy 但是如果你阅读我发布的那个链接上的回复,看起来 node.js 默认使用 en-US,它打印 mm/dd/yyyy
  • 别担心,我很乐意提供帮助,我学到了一件事我不知道 :)
  • 没关系,看来你也是新用户,所以自己的问题好好回答一下(你自己的问题可以回复),把所有的原因信息都上来这个问题,解决它的方法等等,也许它将来对其他人有用,你也可以得到一些观点!几天后,您甚至可以将其标记为已接受的答案。 Ofc 完成后给我加个标签,我也会投票赞成 :)

标签: javascript node.js date


【解决方案1】:

显然,nodejs 默认只包含 en-US 语言环境,如 here 所述,因此是 mm/dd/yyyy 格式。

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

安装完之后我跑了npm installbecause of this,然后在命令行看到了这个:

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

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

非常感谢@quirimmo 帮助我解决我的问题!

【讨论】:

    【解决方案2】:

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

    $ npm install dateformat

    var dateFormat = require('dateformat');
    
    let d1 = new Date();
    console.log(dateFormat(d1, "GMT:dd/mm/yyyy"));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-11
      • 2011-08-16
      • 2011-02-12
      • 2011-11-25
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多