getMinutes()0-9 - 如何使用两个数字?

Mar*_*ndy 126 javascript

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

console.log(date.getMinutes());
console.log(date.getMinutes().length)
Run Code Online (Sandbox Code Playgroud)

这返回3.

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

我试过这个,但它不起作用:

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

ogu*_*gur 255

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

console.log( (date.getMinutes()<10?'0':'') + date.getMinutes() );
Run Code Online (Sandbox Code Playgroud)

  • @ user1063287这意味着:"如果getMinutes()小于10,则返回0,如果更大,则返回空字符串. (4认同)
  • 这个 `&lt;10?'0':''` 是什么意思? (2认同)

Bam*_*bam 185

哎呀这些答案都不是很好,即使是最高职位上升也是如此.在这里,跨浏览器和更干净的int /字符串转换.另外我的建议是不要使用变量名称'date'和代码,例如date = Date(...)你在很大程度上依赖于语言区分大小写(它可以工作,但是当你使用不同语言的服务器/浏览器代码处理不同的规则时会有风险) .所以假设var中的javascript日期current_date:

mins = ('0'+current_date.getMinutes()).slice(-2);
Run Code Online (Sandbox Code Playgroud)

该技术将最右边的2个字符(slice(-2))"0"放在字符串值的前面getMinutes().所以:

"0"+"12" -> "012".slice(-2) -> "12"
Run Code Online (Sandbox Code Playgroud)

"0"+"1" -> "01".slice(-2) -> "01"
Run Code Online (Sandbox Code Playgroud)

  • 优雅的解决方 (6认同)
  • 这比接受的一个人更好. (6认同)
  • slice(-2) 的使用是违反直觉的,但我喜欢它。 (2认同)

Kai*_*ack 23

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

String(date.getMinutes()).padStart(2, "0");
Run Code Online (Sandbox Code Playgroud)

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

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


sf7*_*f77 16

优雅的ES6功能将日期格式化为hh:mm:ss:

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

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


Kap*_*all 12

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

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

现在,如果你想使用它.

console.log(date.getFullMinutes());
Run Code Online (Sandbox Code Playgroud)


use*_*569 10

我建议:

var minutes = data.getMinutes();
minutes = minutes > 9 ? minutes : '0' + minutes;
Run Code Online (Sandbox Code Playgroud)

它是一个函数调用较少.考虑性能总是好的.它也很短;


Ham*_*lla 9

使用 ECMAScript 国际化 API,更多信息

const twoDigitMinutes = date.toLocaleString('en-us', { minute: '2-digit' });
Run Code Online (Sandbox Code Playgroud)


And*_* L. 7

我假设您需要字符串形式的值。您可以使用下面的代码。它总是会返回给你两位数字的分钟作为字符串。

const date_string = "2012-01-18T16:03";
const date = new Date(date_string);
let min = date.getMinutes();

if (min < 10) { // or min = min < 10 ? '0' + min : min;
   min = '0' + min;
} else {
   min = min + '';
}

console.log(min);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。


小智 6

这个怎么样?这个对我有用!:)

var d = new Date();
var minutes = d.getMinutes().toString().replace(/^(\d)$/, '0$1');
Run Code Online (Sandbox Code Playgroud)


Ian*_*GSY 5

另外一个选项:

var dateTime = new Date();
var minutesTwoDigitsWithLeadingZero = ("0" + dateTime.getMinutes()).substr(-2);
Run Code Online (Sandbox Code Playgroud)