如何使选择下拉列表根据当前时间选择选项值

时间:2012-11-29 08:13:39

标签: javascript jquery

我有一个选择下拉列表,时间间隔为30分钟,如

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

从上午0:00开始到晚上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:00 AM,如果当前时间为10:31 AM,则默认为11:00 AM。

有关使用jquery或普通javascript实现此目的的任何指示。

由于

2 个答案:

答案 0 :(得分:2)

您可以使用Math.round函数将值移到最近的半小时:

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/

答案 1 :(得分: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/