getMinutes() 0-9 - 如何显示两位数?

IT技术 javascript
2021-03-18 20:11:45
var date = "2012-01-18T16:03";
var date = new Date(date);

console.log(date.getMinutes());
console.log(date.getMinutes().length)

这将返回 3。

  1. 我如何让它返回'03'?
  2. 为什么.length返回未定义?

我试过这个,但没有用:

如果strlen == 1那么num = ('0' + num);

6个回答
var date = new Date("2012-01-18T16:03");

console.log( (date.getMinutes()<10?'0':'') + date.getMinutes() );
<10?'0':''什么意思?
2021-04-26 20:11:45
@user1063287 这是一个内联 if else 语句
2021-05-07 20:11:45
@user1063287 意思是:“如果 getMinutes() 小于 10,则返回 0,如果大于,则返回空字符串。
2021-05-08 20:11:45
(condition?true:false) 在 PHP 中您可以省略 JS 中的 true 语句 (condition?:false) 然后您将使用 (condition||false) 三元运算符en.wikipedia.org/wiki/Ternary_operation
2021-05-09 20:11:45
2021-05-15 20:11:45

oop,这些答案都不是很好,即使是最高职位。在这里,跨浏览器和更清晰的 int/string 转换。另外,我的建议是不要在代码中使用变量名称“日期”,例如date = Date(...)您严重依赖语言区分大小写的地方(它可以工作,但是当您使用具有不同规则的不同语言的服务器/浏览器代码工作时会有风险) . 因此,假设 var 中的 javascript 日期current_date

mins = ('0'+current_date.getMinutes()).slice(-2);

该技术是将最右边的 2 个字符(slice(-2))“0”附加到 的字符串值上getMinutes()所以:

"0"+"12" -> "012".slice(-2) -> "12"

"0"+"1" -> "01".slice(-2) -> "01"
slice(-2) 的使用是违反直觉的,但我喜欢它。
2021-05-14 20:11:45

另一种简短的方法是使用前导零填充分钟:

String(date.getMinutes()).padStart(2, "0");

含义:使字符串长度为两个字符,如果缺少字符,则0在此位置设置。

请参阅str.padStart(targetLength, padString)处的文档

虽然我真的很喜欢这个答案,但不幸的是它对我不起作用(记录在 Tasker Jslet 中)。接受的答案是解决方法,但万无一失!
2021-04-21 20:11:45
这么棒的回答
2021-05-06 20:11:45
哇!这就是我正在寻找的那种答案
2021-05-11 20:11:45
我不经常对此发表评论,但我觉得不得不说这是手头问题的正确答案。对于整数,5 和 05 之间没有区别,只有当您想将该值视为字符串时才重要,在这种情况下,您需要使用字符串函数。
2021-05-12 20:11:45

优雅的 ES6 函数将日期格式化为hh:mm:ss

const leadingZero = (num) => `0${num}`.slice(-2);

const formatTime = (date) =>
  [date.getHours(), date.getMinutes(), date.getSeconds()]
  .map(leadingZero)
  .join(':');

如果可以的话,我想为这个问题提供一个更简洁的解决方案。接受的答案非常好。但我会这样做。

Date.prototype.getFullMinutes = function () {
   if (this.getMinutes() < 10) {
       return '0' + this.getMinutes();
   }
   return this.getMinutes();
};

现在如果你想使用这个。

console.log(date.getFullMinutes());