簡體   English   中英

如何遍歷JavaScript中的時間值?

[英]how to loop through time values in JavaScript?

我遇到的情況是用戶選擇開始時間,結束時間和會議時間。 一旦選擇了開始時間並達到會議長度,我必須從開始時間一直循環到5:00 PM,並增加會議長度,並在END時間輸出每個時隙。 我在JavaScript中使用Date API使用我的代碼,問題是我的for循環只給我第一個值,然后停止。 我不確定代碼中有什么奇怪的地方,因此如果有人可以提供幫助,請告訴我。 這是我的代碼:

<tr>
  <th>Start Time:</th>
  <td>
    <select name="stime" id="stime" />
                <option value="">--Select start time--</option>
        </select>
  </td>
  <br />

  <th>Meeting Length:</th>
  <td>
    <select name="meet_leng" id="meet_leng">
            <option value="">--Select length--</option>
        </select>
  </td>
  <br />

  <th>End Time:</th>
  <td>
    <select name="etime" id="etime"/>
            <option value="">--Select end time--</option>
        </select>
  </td>
</tr>

Javascript:

$(function() {
    //This loop create values fro meeting length
    for(var i=5; i <= 60; i+=5){
        $('#meet_leng').append('<option value="'+i+'">'+i+' min'+'</option>')
    }


    for(var i=700; i<= 1700; i+=15){
    var mins = i % 100;
    var hours = parseInt(i/100);

    if (mins > 45) {
        mins = 0;
      hours += 1;
      i = hours * 100;
    }

    var AmPm = " AM";
    //var standardTime = hours > 11 ? ' PM' : ' AM';
    //format hours
    if(hours == 12){
        AmPm = " PM";
    }

        if (hours > 12) {
        hours = hours - 12;
        AmPm = " PM";
        }

    $('#stime').append('<option value="'+('0' + (hours)).slice(-2)+':'+('0' + mins).slice(-2)+AmPm+'">'+('0' + (hours)).slice(-2)+':'+('0' + mins).slice(-2)+AmPm+' </option>')
  }
});

$('#meet_leng').on('change', function() {
    var time1 = new Date();
  var time2 = new Date();
  var add = new Date();

  //meeting length
  var meetingLength = parseInt($('#meet_leng').val());

    //start time 
  var startTime = $('#stime').val();
    var startHour = startTime.split(':')[0];
  var startMin = startTime.split(':')[1].replace(/AM|PM/gi,'');

  //end time
  var endTime = '05:00 PM';
  var endHour = endTime.split(':')[0];
  var endMin = endTime.split(':')[1].replace(/AM|PM/gi,'');

  //Check if start time is PM and adjust hours to military
    if(startTime.indexOf('PM') > -1){
    startHour = parseInt(startHour) + 12;
    console.log(startHour);
    alert(startHour)
  }

  //Check if end time is PM and adjust hours to military
  if(endTime.indexOf('PM') > -1){
    endHour = parseInt(endHour) + 12;
    console.log(endHour);
  }

  //Date API start time
  time1.setHours(parseInt(startHour));
    time1.setMinutes(parseInt(startMin));

  //Date API end time
  time2.setHours(parseInt(endHour));
    time2.setMinutes(parseInt(endMin));

  //Adding meeting length to start time, this value will be use for end    time
  time1.setMinutes(time1.getMinutes() + meetingLength);

  for(var i=time1; i <= time2; i+=meetingLength){
    $('#etime').append('<option value="'+i+'">'+i+'</option>')
  }

});

這是我的代碼的工作示例: https : //jsfiddle.net/dmilos89/6n458ze9/6/

如果用此替換for循環,則將獲得17:00之前的所有結束時間

do {
        time1.setMinutes(time1.getMinutes() + meetingLength);
        $('#etime').append('<option value="' + time1 + '">' + time1 + '</option>');
      } while (time1 < time2)

要么

time1.setMinutes(time1.getMinutes() + meetingLength);

while (time1 < time2){
    $('#etime').append('<option value="' + time1 + '">' + time1 + '</option>');
    time1.setMinutes(time1.getMinutes() + meetingLength);
{

任一個有效,但第二個也將過濾掉任何會立即超出運行時間的會議17:00

for循環中的+ =只是將會議長度添加到字符串表示形式的末尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM