1

这是尝试过的:

部分伪代码:

var hours = date1.getHours();
var minutes = date2.getMinutes();

if (hours.length == 1)
    hours = "0" + hours;

if (minutes.length == 1)
    minutes = "0" + minutes;

var time = hours + ':' + minutes;

有没有像格式化字符串函数这样的更聪明的方法,我可以说:

var minutes = date.getMinutes('mm');
var hours = date.getHours('hh');

所以它会自动添加零?

4

6 回答 6

5

这是您的代码已修复,因为整数没有长度

var hours = date1.getHours();
var minutes = date2.getMinutes();

if (hours<10) hours = "0" + hours;
if (minutes<10) minutes = "0" + minutes;

var time = ""+ hours + ":" + minutes;

您不需要框架,也没有更短的方法可以做到这一点

这可能是你的意思:

现场演示

function pad(num) {
  return ("0"+num).slice(-2)
}
var time = pad(date1.getHours())+":"+pad(date2.getMinutes());
于 2013-05-22T14:07:35.870 回答
3

此功能在 javascript 中本机不存在,您必须自己添加它(正如您已经开始做的那样),或者使用包。

于 2013-05-22T14:09:39.470 回答
2

使用 DateJS,您将能够使用 mm 和 hh 添加前面的零 :)

https://code.google.com/p/datejs/wiki/FormatSpecifiers

于 2013-05-22T14:06:22.203 回答
1

您可以向 Number 原型添加方法

  Number.prototype.pad0 = function(length) {
    var result = this.toString();
    while(result.length<length) result = "0"+result;
    return result;
  }

然后你就能得到你想要的

  var date = new Date();  
  console.log(date.getMinutes().pad0(2));
  console.log(date.getHours().pad0(2));
于 2013-05-22T14:11:26.167 回答
1

还有另一种方法:

var d = new Date();
var t = [ d.getHours(), d.getMinutes(), d.getSeconds() ];

var s = t.map( function(z){return ('00'+z).slice(-2)} ).join(':');

console.log(s);

时间部分被放入一个数组中。该数组通过map()数字获得前导零的位置。然后将生成的数组连接成一个带有“:”分隔符的字符串。

于 2014-05-12T19:41:32.347 回答
0

在检查长度之前将数字转换为字符串:

var hours = String(date1.getHours());
var minutes = String(date2.getMinutes());

if (hours.length == 1)
    hours = "0" + hours;

if (minutes.length == 1)
    minutes = "0" + minutes;

var time = hours + ':' + minutes;
于 2013-05-22T14:11:16.043 回答