2011-08-09 9 views
2

開始時刻と終了時刻を知っていれば、どのようにX分ごとに時間を分割できますか?私の開始時刻が13:00で、私の終了時間があるのであれば、たとえば、:15:00とそれを30分ごとに分割し、その後、私は配列含むを取得したいと思います:チャンクのJavaScript分割時間

13:00 - 13:30 
14:00 - 14:30 
14:30 - 15:00 
+0

:文字列のためにこれをしたい人のための、このP ...まあいい...タイプはあなたの時間が保存されていますか?文字列? – Spycho

+0

Spycho:Date Object –

+0

出力配列にはどのようなものが含まれますか?それらの文字列、文字通り?または 'Date'オブジェクトのペア?他に何か? –

答えて

0

あなたはにdatejsとそのaddメソッドを使用することができますDateオブジェクトに分を追加します。 compareToメソッドを使用して、適切な範囲内にいることを確認できます。

外部ライブラリを使用しない場合は、w3schoolsを参照してください。

//Set minutes 
var myDate=new Date(); 
myDate.setMinutes(myDate.getMinutes()+30); 

//Compare two dates. 
var x=new Date(); 
x.setFullYear(2100,0,14); 
var today = new Date(); 
if (x>today) 
    { 
    alert("Today is before 14th January 2100"); 
    } 
else 
    { 
    alert("Today is after 14th January 2100"); 
    } 
+0

@Mike datejsはMITなので、コードを見て、自分のやることをすることができます。 – Gord

0

すべてを難破船うまく:どのような変数

function getIntervals(startString,endString,intervalString) { 
var start = startString.split(":"); 
var end = endString.split(":"); 
var interval = intervalString.split(":"); 
startInMinutes = start[0]*60+start[1]*1; 
endInMinutes = end[0]*60+end[1]*1; 
intervalInMinutes = interval[0]*60+interval[1]*1; 
var times = []; 
var intervalsOfTime = []; 

for(var i = startInMinutes; i <= endInMinutes; i+=intervalInMinutes) { 
    var hour = Math.floor(i/60) + ""; 
    var minute = i%60 + ""; 
    minute = (minute.length < 2) ? "0" + minute : minute; 
    hour = (hour.length < 2) ? "0" + hour : hour; 
    times.push(hour + ":" + minute); 
} 


for(var i = 0; i < times.length-1; i++) 
    intervalsOfTime.push(times[i] + " - " + times[i+1]) 

return intervalsOfTime; 

} 
1
13:00 - 13:30 
13:30 - 14:00 
14:00 - 14:30 
14:30 - 15:00 

see it in action

var makeTimeIntervals = function (startTime, endTime, increment) { 
    startTime = startTime.toString().split(':'); 
    endTime = endTime.toString().split(':'); 
    increment = parseInt(increment, 10); 

    var pad = function (n) { return (n < 10) ? '0' + n.toString() : n; }, 
     startHr = parseInt(startTime[0], 10), 
     startMin = parseInt(startTime[1], 10), 
     endHr = parseInt(endTime[0], 10), 
     endMin = parseInt(endTime[1], 10), 
     currentHr = startHr, 
     currentMin = startMin, 
     previous = currentHr + ':' + pad(currentMin), 
     current = '', 
     r = []; 

    do { 
     currentMin += increment; 
     if ((currentMin % 60) === 0 || currentMin > 60) { 
      currentMin = (currentMin === 60) ? 0 : currentMin - 60; 
      currentHr += 1; 
     } 
     current = currentHr + ':' + pad(currentMin); 
     r.push(previous + ' - ' + current); 
     previous = current; 
    } while (currentHr !== endHr); 

    return r; 
}; 

var a = makeTimeIntervals('13:00', '15:00', 30); 

for (var i in a) if (a.hasOwnProperty(i)) { document.body.innerHTML += a[i] + '<br />'; } 
+0

リンクをクリックするのを忘れないでください... – shawndumas

関連する問題