2015-06-21 37 views
1

我需要將時間(hh:mm:ss)拆分爲整數。例如13:14:24/12用Javascript中的整數劃分hh:mm:ss

如果我把它轉換成日期和除法:

new Date(date.getMonth()+1 + " " + 
      date.getDate() + ", " + 
      date.getFullYear() + " " + 
      "13:14:24")/12; 

我得到一個非常長的數字119579922000,是日/ 12毫秒?我需要的結果是相同的hh:mm:ss格式。

+1

我想你是通過將這樣做(HH * 3600 +毫米* 60 + SS)/ 12和轉換更好回到hh:mm:ss格式。 – martijnn2008

+2

@ martijnn2008在這個問題中沒有任何信號表示Java代替JavaScript。 – Anonymous

+0

@Anonymous存在一個完全相同的問題,但對於SQL,所以SO不會讓我發佈。 – 3zzy

回答

5
var h = 13, m = 14, s = 24; 

var secsSinceMidnight = (h*3600) + (m*60) + s; 
var oneTwelth = secsSinceMidnight/12; 

h = Math.floor(oneTwelth/3600); 
m = Math.floor((oneTwelth % 3600)/60); 
s = Math.floor((oneTwelth % 3600) % 60); 

console.log(h + ":" + m + ":" + s); 

下面是使用Sugar.js庫,這是我個人的選擇延長日期處理JavaScript中的另一種方法:

var midnight = Date.create().beginningOfDay(); 
var secsSinceMidnight = Date.create().secondsSince(midnight); 
console.log((secsSinceMidnight/12).secondsAfter(midnight)); 

要解釋的最後一行:secondsAfter是在Number定義的函數類型。它返回一個Date對象,然後將其發送到console.log()

+0

很高興知道糖,但我現在正在考慮使用moment.js,因爲純JavaScript是日期操縱的一種痛苦。 – 3zzy

1

只是另一個簡單的舊的JavaScript的替代品,但在一行代碼中完成。

return (new Date((date - date.getTimezoneOffset() * 60000) % 86400000/divisor)).toUTCString().split(' ')[4]; 

它按照時區(分鐘)進行調整,因爲數學用UTC表示。接下來用除數除模(86400000毫秒= 1天)。返回格式化的時間字符串。

工作實例:

function getTimeSlice(date, divisor) { 
 
    return (new Date((date - date.getTimezoneOffset() * 60000) % 86400000/divisor)).toUTCString().split(' ')[4]; 
 
} 
 

 
// Test 
 
var test = new Date(); 
 
test.setHours(13, 14, 24, 0); 
 
stdout.innerHTML = getTimeSlice(test, 12);
<div id="stdout"></div>

0

不太清楚你想要做什麼,但它可能會幫助到有幾個簡單的功能,一個轉換H:M:S秒,秒和秒轉換爲h:m:s。

E.g.

// Convert H:M:S to seconds 
// Seconds are optional (i.e. n:n is treated as h:s) 
function hmsToSeconds(s) { 
    var b = s.split(':'); 
    return b[0]*3600 + b[1]*60 + (+b[2] || 0); 
} 

// Convert seconds to hh:mm:ss 
function secondsToHMS(secs) { 
    function z(n){return (n<10?'0':'') + n;} 
    var sign = secs < 0? '-':''; 
    secs = Math.abs(secs); 
    return sign + z(secs/3600 |0) + ':' + z((secs%3600)/60 |0) + ':' + z(secs%60 |0); 
} 

所以,如果你想通過12來劃分時間,則:

console.log(secondsToHMS(hmsToSeconds('13:14:24')/12)); // 01:06:12