Node.js中的toLocaleTimeString是否支持hour12选项?

我似乎无法得到在node.js工作hour12,但在浏览器(铬)它工作得很好。

Node.js在terminal

var date = new Date(); var d12 = date.toLocaleTimeString('en-US', {hour12:true}); var d24 = date.toLocaleTimeString('en-US', {hour12:false}); console.log(d12) // output 13:43:38 console.log(d24) // output 13:43:38 

两者都是一样的结果:13:43:38

更新添加小提琴,以certificate它在浏览器中的作品

有人能指点我解释为什么的文档,或者告诉我我做错了什么?

这不只是你。 我尝试在Node.js中运行相同的块,并且无法轻松地以12小时格式打印它。

做了一些谷歌search之后,Moment.js似乎成为了操纵和显示时间和日子的stream行工具。 如果你需要操纵很多时间/date,可能值得一试, Moment.js 。

 // with Moment var moment = require('moment'); console.log(moment().format('hh:mm')); 

除此以外,

 // just one of many ways to do it in Javascript function hour12 (hour) { var mod = hour % 12; if (mod < 10) { return '0'.concat(mod); } else { return mod; } } console.log(new Date().toLocaleTimeString().replace(/[\d]+/, hour12(date.getHours()))); 

编辑我在深夜回答了这个问题,意识到我在解决这个问题上错过了这个标记。

由于Node.js基于Chrome的v8 JavaScript引擎,我开始在源代码中寻找。 我看不到一个考虑到传递给它的参数的地方。

代码在这里 , toLocaleTimeString是324行。相比之下,我环顾了Mozilla的SpiderMonkey引擎,它一眼就可以解释这一点。

您可以使用toLocaleDateStringtoLocaleTimeString格式化时间和date。 传递给这些方法的第一个参数是一个语言环境值,比如“en-us”。 第二个参数(如果存在)指定格式化选项,例如工作日的长格式。

我已经使用了Chrome,效果很好。

 var date = new Date(Date.UTC(2016, 3, 7, 14, 30, 0)); var options = { weekday: "long", year: "numeric", month: "short", day: "numeric", hour: "2-digit", minute: "2-digit" }; document.write(date.toLocaleTimeString("en-US", options));