关于javascript:使用new Date()时获取millis toLocaleTimeString()

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中格式化日期的文档?


我确实找到了原始解决方案的一个问题。当我执行它时,它产生hh:mm:ss PM.mil。我假设您需要hh:mm:ss.mil这是作为函数编写的解决方案,因此您可以传递日期对象并获取正确的格式:

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或使用各个日期函数构建自己的字符串。