2013-05-22 27 views
1

這是什麼都試過時間字符串:格式基於零小時和分鐘在javascript

部分僞代碼:

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

所以它會自動添加零?

+0

可能的重複[Javascript添加領先的零到日期](http://stackoverflow.com/questions/3605214/javascript-add-leading-zeroes-to-date) – 2013-05-22 14:04:54

回答

3

此功能並不在JavaScript本身存在的,你必須要麼自己添加它(因爲你已經開始這樣做),或使用包。

+0

愛的時刻,一個偉大而簡單的小日期庫。 – Xotic750

+1

我現在安裝了moment.js,擺脫了15條冗餘的代碼,由3行代替,具有更好的可讀性。我從第一瞬間就愛上了這一刻... – Elisabeth

2

使用DateJS,你將能夠使用毫米和hh添加前面的零:)

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

+0

爲什麼投票? Datejs和瞬間用戶之間的某種衝突? – xShirase

+0

瞬間聽起來更多l33t; P – Elisabeth

+1

看看這個:http://jsperf.com/underscore-date-vs-datejs/7 Quote: moment.js更輕,並提供更快的解析。另一方面,date.js提供更快的格式和操作。當用戶正在尋找格式,我堅持我的答案:DateJS規則! – xShirase

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()); 
+0

是的我知道所以我寫了僞代碼;-) – Elisabeth

+3

愛特定「(」0「+ num).slice(-2)」 – Xotic750

+0

它可能更一般,但是這樣做可能會導致它保持簡短的目的。幾小時,幾分鐘和幾秒鐘,我們只需要最多兩個字符 – mplungjan

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; 
+0

或者只是測試它們不到10 – mplungjan

+0

哈哈.............. – Elisabeth

1

您可以添加一個方法來數原型

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)); 
+0

美麗的扭曲:) – xShirase

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(),其中數字變爲前導零。然後用「:」分隔符將結果數組連接成一個字符串。

相關問題