Get millis when using new Date().toLocaleTimeString()
本问题已经有最佳答案,请猛点这里访问。
我有这个代码:
1 | v.d = new Date().toLocaleTimeString(); |
它产生这样的东西:
1 | 20:11:40 |
所以这是第二天的时间,没有毫秒。
我的问题是:是否有内置调用可以显示毫秒的时间?
我正在寻找这样的东西(到毫秒):
1 | 20:11:40.124 |
这有效,但我正在寻找更紧凑的东西:
1 2 | const d = new Date(); v.d = d.toLocaleTimeString() + `.${d.getMilliseconds()}`; |
这会产生:
1 | 20:17:30.744 |
请注意,为了使这项工作更好,您需要添加此部分:
将d.getMilliseconds()调用的格式化为毫秒,始终为3位数
您不能依赖于toLocaleTimeString返回特定格式,因为它依赖于实现。自己构建格式更可靠,例如:
1 2 3 4 5 6 7 8 9 10 | function getFormattedTime(date) { var d = date || new Date(); var z = n => ('0'+n).slice(-2); var zz = n => ('00'+n).slice(-3); return `${z(d.getHours())}:${z(d.getMinutes())}:${z(d.getSeconds())}.${zz(d.getMilliseconds())}`; } console.log(getFormattedTime()); console.log(getFormattedTime(new Date(2018,1,1))); console.log(getFormattedTime(new Date(2018,4,30,23,51,12,89))); |
另请参阅在哪里可以找到有关在JavaScript中格式化日期的文档?
我确实找到了原始解决方案的一个问题。当我执行它时,它产生
1 2 3 4 5 6 7 8 | const d = new Date() const getTimeWithMilliseconds = date => { const t = d.toLocaleTimeString(); return `${t.substring(0,8)}.${date.getMilliseconds() + t.substring(8,11)}`; } console.log(getTimeWithMilliseconds(d)); |
或者如果您想要24小时格式:
1 2 3 4 5 6 7 | const d = new Date() const getTimeWithMilliseconds = date => { return `${date.toLocaleTimeString('it-US')}.${date.getMilliseconds()}`; } console.log(getTimeWithMilliseconds(d)); |
有ISOString()。但退回一个级别,除了这个例外,没有标准格式化js中的日期。因此,您可以使用toISOString或使用各个日期函数构建自己的字符串。