Date.prototype.toLocaleTimeString()
方法返回一个字符串,其中包含该日期时间部分的语言敏感表示。它适用于现代浏览器。
不幸的是,原生函数无法阻止输出秒。默认情况下,它会输出时间格式,如hh:mm:ss
或hh:mm AM/PM
等。
秒:第二个的表示。可能的值为“
numeric
”,“2-digit
”。
这意味着,您无法使用{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)?/);
答案 0 :(得分:8)
您可以使用:
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"
答案 1 :(得分:2)
只是添加另一种可能的组合来实现这一目标:
(new Date()).toLocaleTimeString().match(/\d{2}:\d{2}|[AMP]+/g).join(' ')