如何在不显示秒的情况下使用.toLocaleTimeString()?

jav*_*g36 139 javascript time

我目前正在尝试显示用户的时间而不显示秒数.有没有办法可以使用Javascript的.toLocaleTimeString()来做到这一点?

做这样的事情:

var date = new Date();
var string = date.toLocaleTimeString();
Run Code Online (Sandbox Code Playgroud)

将显示每个单位的用户时间,例如,当前显示3:39:15 PM.我能够显示相同的字符串,只是没有秒吗?(例如下午3:39)

CJL*_*pez 270

您可以随时根据您可以设置的页面设置选项,以摆脱秒,这样的事情

var dateWithouthSecond = new Date();
dateWithouthSecond.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});
Run Code Online (Sandbox Code Playgroud)

受Firefox,Chrome,IE9 +和Opera支持.在Web浏览器控制台上试用它.

  • 使用`[]`省略特定的语言环境.这样你就停留在用户语言环境中:`toLocaleTimeString([],{hour:'2-digit',minute:'2-digit'}` (14认同)
  • 适用于chrome 51:`new Date().toLocaleTimeString([],{hour:'2-digit',minute:'2-digit',hour12:false}); "17:08"` (11认同)
  • FYI`小时:"2位数""在Chrome 42中没有为我工作,也没有FF 37 ---`d =新日期(1429524912495).toLocaleTimeString('en-US',{hour:'2-digit',分钟:'2-digit',hour12:true})`返回`"6:15 AM"`. (5认同)
  • 以下是允许选项的文档(它基于单独的构造函数,但选项是一对一映射的):https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat /日期时间格式 (3认同)
  • 谢谢,我正在寻找这个答案的时间. (2认同)

小智 24

这对我有用:

var date = new Date();
var string = date.toLocaleTimeString([], {timeStyle: 'short'});

Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,截至 2020 年 3 月,[timeStyle 选项仅在 Chrome 和 Opera 中受支持](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/DateTimeFormat ),但不适用于 Firefox、Edge/IE 和 Safari。如果您想要广泛的覆盖范围,现在最好坚持使用小时和分钟选项。 (15认同)
  • 截至 2022 年 2 月,似乎适用于除 IE 之外的所有最新浏览器。 (6认同)

drc*_*uck 22

我想要它的日期和时间,但没有秒,所以我用了这个:

var dateWithoutSecond = new Date();
dateWithoutSecond.toLocaleTimeString([], {year: 'numeric', month: 'numeric', day: 'numeric', hour: '2-digit', minute: '2-digit'});
Run Code Online (Sandbox Code Playgroud)

它产生了以下输出:

2020/7/29,下午 2:46

这正是我需要的东西。曾在火狐工作。

  • 事实上它是“02:46”(而不是“2:46”) (2认同)

Jos*_*hee 13

带日期且不带0小时前导:

let d = new Date(2022, 2, 21, 7, 45, 0);
let s = d.toLocaleString([], { dateStyle: 'short', timeStyle: 'short' });
console.log(s);
// '2/21/22, 7:45 AM'
Run Code Online (Sandbox Code Playgroud)

所有现代浏览器都支持这一点。


Rob*_*obG 9

Date.prototype.toLocaleString返回的值取决于实现,因此您可以获得所获得的值.您可以尝试解析字符串以删除秒数,但在不同的浏览器中可能会有所不同,因此您需要考虑使用的每个浏览器.

使用Date方法创建自己的,明确的格式并不困难.例如:

function formatTimeHHMMA(d) {
  function z(n){return (n<10?'0':'')+n}
  var h = d.getHours();
  return (h%12 || 12) + ':' + z(d.getMinutes()) + ' ' + (h<12? 'AM' :'PM');
}
Run Code Online (Sandbox Code Playgroud)

  • 不要解析从toLocaleTimeString返回的字符串.我已经有几年没有任何问题了.但是今天我注意到它没有用.原来有一些特殊的unicode字符(例如0x200E,一个从左到右的标记),Date.parse无法处理.从未见过这样的事.所以我将停止使用所有语言环境函数,并构建我自己的时间格式字符串.这将使我免于像这样的邪恶惊喜. (7认同)

小智 5

使用语言环境:

var date = new Date();
date.toLocaleTimeString('fr-FR', {hour: '2-digit', minute: '2-digit'})
Run Code Online (Sandbox Code Playgroud)