在javascript中格式化基于零的小时和分钟的时间字符串

时间:2013-05-22 14:01:06

标签: javascript date

这是尝试过的:

部分伪代码:

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');

所以它会自动添加零?

6 个答案:

答案 0 :(得分:4)

由于整数

没有长度,因此修复了代码
var hours = date1.getHours();
var minutes = date2.getMinutes();

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

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

您不需要框架,并且没有更短的方法来执行此操作

这可能是你的意思:

Live demo

function pad(num) {
  return ("0"+num).slice(-2)
}
var time = pad(date1.getHours())+":"+pad(date2.getMinutes());

答案 1 :(得分:3)

此功能在javascript中本身不存在,您必须自己添加(如您已开始执行),或使用包。

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

您可以向Number prototype

添加方法
  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));

答案 4 :(得分: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(),其中数字变为前导零。然后将生成的数组连接到一个字符串中,使用&#34;:&#34;分离器。

答案 5 :(得分: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;