从toLocaleTimeString中移除秒数

Remove seconds from toLocaleTimeString

本文关键字:toLocaleTimeString      更新时间:2023-09-26

Date.prototype.toLocaleTimeString()方法返回一个字符串,该字符串具有该日期的时间部分的语言敏感表示形式。它可用于现代浏览器。

不幸的是,本机函数无法阻止秒的输出。默认输出hh:mm:sshh:mm AM/PM等时间格式。

second:秒的表示。取值为"numeric"、"2-digit"。

来源:MDN参考

这意味着,你不能使用像{second: false}这样的东西。


我正在寻找一个简单愚蠢的解决方案,以hh:mm:ss格式化的字符串中删除秒

var date = new Date();
var time = date.toLocaleTimeString(navigator.language, {hour: '2-digit', minute:'2-digit'});
console.log(time); // 15:24:07

这个正则表达式工作:

time.replace(/:'d'd( |$)/,'');
time.replace(/('d{2}:'d{2})(?::'d{2})?(?:am|pm)?/);

您可以使用:

var time = date.toLocaleTimeString(navigator.language, {hour: '2-digit', minute:'2-digit'})
           .replace(/(:'d{2}| [AP]M)$/, "");

btw Google Chrome返回

new Date().toLocaleTimeString(navigator.language, {hour: '2-digit', minute:'2-digit'});

作为"12:40 PM"

只是添加另一种可能的组合来实现这一点:

(new Date()).toLocaleTimeString().match(/'d{2}:'d{2}|[AMP]+/g).join(' ')