从toLocaleTimeString中删除秒数

时间:2014-06-06 16:34:44

标签: javascript regex date

Date.prototype.toLocaleTimeString()方法返回一个字符串,其中包含该日期时间部分的语言敏感表示。它适用于现代浏览器。

不幸的是,原生函数无法阻止输出秒。默认情况下,它会输出时间格式,如hh:mm:sshh:mm AM/PM等。

  

:第二个的表示。可能的值为“numeric”,“2-digit”。

来源:MDN reference

这意味着,您无法使用{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)?/);

2 个答案:

答案 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(' ')