2

次のような30分間隔の時間の選択ドロップダウンがあります

11:00 AM, 11:30 AM, 12:00 PM, 12:30 PM, 1:00 PM

午前0時から午後11時30分まで

<select id='time'>
  <option value="11:30 AM">11:30 AM</option>
  <option value="12:00 PM">12:00 PM</option>
  <option value="12:30 PM">12:30 PM</option>
  <option value="1:00 PM">1:00 PM</option>
 <option value="1:30 PM">1:30 PM</option>
 <option value="2:00 PM">2:00 PM</option>
 <option value="2:30 PM">2:30 PM</option>
 <option value="3:00 PM">3:00 PM</option>
 <option value="3:30 PM">3:30 PM</option>
 <option value="4:00 PM">4:00 PM</option>
 <option value="4:30 PM">4:30 PM</option>
</select>

$(document).ready(function(){

  $('#time').val(.now()); // this wouldnt work it gives the current time which may be between 30 min 

});

この選択ドロップダウンをデフォルトで、現在の時刻に基づいて最も近い時刻に丸めたいと思います。

たとえば。現在の時刻が午前 10 時 46 分である場合、選択された値は午前 11 時である必要があり、現在の時刻が午前 10 時 31 分である場合は、デフォルトで午前 11 時である必要があります。

jqueryまたは通常のjavascriptを使用してこれを達成するための指針。

ありがとう

4

2 に答える 2

2

この関数を使用してMath.round、値を 30 分単位で取得できます。

Math.round(Date.now()/(30*60*1000))*(30*60*1000));

これから日付オブジェクトを構築し、時刻を取得します。

var date = new Date(Math.round(Date.now() / (30 * 60 * 1000)) * (30 * 60 * 1000));
$('#time').val(date.getHours()%12 + ":" + ("0"+date.getMinutes()).slice(-2) + " " + (date.getHours() >= 12 ? "PM" : "AM"));

ここにデモンストレーションがあります:http://jsfiddle.net/GsR6v/9/

于 2012-11-29T08:28:38.573 に答える
1

次のように Date の値を丸めることができます。

var date = new Date(Math.round(Date.now()/(30*60*1000))*(30*60*1000));

次に、これを使用して日付を設定します。

$("select option").filter(function() {
  //may want to use $.trim in here
  return $(this).text() == <YourDate>; 
}).attr('selected', true);​

私のフィドルでこれを試してください:http://jsfiddle.net/mC869/

于 2012-11-29T08:42:09.757 に答える