2013-10-26 55 views
0

我有一個代表時間的字符串。 例如,讓我們這個字符串:時間回合到最近的小時

var s = '06:59' 

如何回合時間到最接近的小時?

+2

'六十零分之百* min'可以給你真正的十進制所以59分鐘變成' 98.33333333333334' – andlrc

+0

我可以這樣做,就像創建新日期比得到分鐘四捨五入它比再次轉換爲字符串格式,但它是大代碼,所以我我正在努力做到這一點優雅的方式 – user2114177

+0

你可以請張貼大代碼嗎?也許我們找到一些簡化。但它似乎是正確的方法(假設時間需要作爲字符串存儲,這可能是實際問題)。 – Bergi

回答

1

嘗試以下操作:

var s = '06:59'; 
var n = s.split(':'); 
n[0] = Math.round(parseInt(n[0]) + parseInt(n[1])/60) % 24; 
n[1] = '00'; 
var output = n.join(':'); 

或者更簡潔的N20084753的建議,

var s = '06:59'; 
var n = s.split(':'); 
var output = Math.round(parseInt(n[0]) + parseInt(n[1])/60) % 24 + ':00'; 
+0

非常好的解決方案,增加了一點 var output = Math.round(parseInt(n [0])+ parseInt(n [1])/ 60) +':00'; 我認爲沒有必要加入。 – N20084753

+0

@ N20084753感謝您指出。添加到我的答案。 – jkshah

+2

不過,你可能不希望你的輸出是'24:00' – Claies

0
var mins = parseInt(s.split(":")[1]); 
var hours = parseInt(s.split(":")[0]); 
var result = ""; 
if(mins > 30) 
    hours++; 
if(hours < 10) 
    result = "0" + hours + ":00"; 
else if(hours > 23) 
    result = "00:00"; 
else 
    result = "" + hours + ":00"; 
+3

這是JavaScript,所以沒有'(int)'類型轉換(使用['parseInt'函數](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt) )和['split'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split)拼寫爲小寫。 – Bergi

+1

它簡單的'parseInt'沒有命名空間,並記住基數10 – andlrc

0
var roundTime = function(time) { 
    var splitted = time.split(':'); 
    var mins = parseInt(splitted[1]), 
     hours = parseInt(splitted[0]); 
    return (mins > 31 ? hours + 1 : hours) + ":00"; 
}