【问题标题】:Remove seconds from toLocaleTimeString从 toLocaleTimeString 中删除秒数
【发布时间】:2014-07-28 00:19:47
【问题描述】:

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

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

second:秒的表示。可能的值为“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)?/);

【问题讨论】:

标签: javascript regex date


【解决方案1】:

你可以使用:

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

顺便说一句Google Chrome返回

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

作为"12:40 PM"

【讨论】:

  • 是的,hh:mm:ss 是默认输出格式。我在我的系统上启用了 24 小时时间显示格式。
  • ok 添加.replace(/(:\d{2}| [AP]M)$/, ""); 在这两种情况下都可以。
【解决方案2】:

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

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

【讨论】:

  • 谢谢,但是当系统格式输出设置为hh:mm AM/PM时,这完全消除了时间。
  • 它实际上适用于您的格式 hh:mm:ss AM 或 PM 在表达式中是可选的
猜你喜欢
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
  • 2021-08-26
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多