javascript 从 toLocaleTimeString 中删除秒数
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/24086741/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Remove seconds from toLocaleTimeString
提问by mate64
The Date.prototype.toLocaleTimeString()
method returns a string with a language sensitive representation of the time portion of this date. It is available for modern browsers.
该Date.prototype.toLocaleTimeString()
方法返回一个字符串,该字符串具有该日期时间部分的语言敏感表示。它适用于现代浏览器。
Unfortunately, the native function is not ableto prevent the output of seconds. By default, it outputs a time format like hh:mm:ss
or hh:mm AM/PM
etc.
不幸的是,本机函数无法阻止seconds的输出。默认情况下,它输出类似hh:mm:ss
或hh:mm AM/PM
等的时间格式。
second: The representation of the second. Possible values are "
numeric
", "2-digit
".
second:第二个的表示。可能的值为“
numeric
”、“2-digit
”。
Source: MDN reference
来源:MDN 参考
This means, that you can not use something like {second: false}
.
这意味着,您不能使用类似{second: false}
.
I'm looking for a simple stupidsolution, to remove the secondsfrom a hh:mm:ss
formatted string.
我正在寻找一个简单的愚蠢解决方案,从格式化的字符串中删除秒数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
This regular expressions don'twork:
这正则表达式不工作:
time.replace(/:\d\d( |$)/,'');
time.replace(/(\d{2}:\d{2})(?::\d{2})?(?:am|pm)?/);
采纳答案by anubhava
You can use:
您可以使用:
var time = date.toLocaleTimeString(navigator.language, {hour: '2-digit', minute:'2-digit'})
.replace(/(:\d{2}| [AP]M)$/, "");
btw Google Chrome
returns
顺便说一句Google Chrome
返回
new Date().toLocaleTimeString(navigator.language, {hour: '2-digit', minute:'2-digit'});
as "12:40 PM"
作为 "12:40 PM"
回答by Dalorzo
Just to add another possible combination to achieve this:
只是添加另一种可能的组合来实现这一点:
(new Date()).toLocaleTimeString().match(/\d{2}:\d{2}|[AMP]+/g).join(' ')