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

Javascript 如何使用“选择”下拉列表根据当前时间选择选项值,javascript,jquery,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=

我有一个选择下拉列表,时间间隔为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,如果当前时间为上午10:31,则默认值也应为上午11:00

任何关于使用jquery或普通javascript实现这一点的指针

谢谢

您可以使用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"));

下面是一个演示:

您可以尝试对日期的值进行四舍五入,如下所示:

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);​

在我的小提琴上试试这个:

谢谢@Asad,我在jsfiddle上试过,我的时间是下午2:09,但仍然默认为上午11:30。我确保在选择框中添加了2:30的时间PM@Prady你需要加上下午2:00,而不是PMi加上的2:30。。。我用我的选择栏上的值更新了问题。。。唯一的问题是它对较低时间的舍入。例如,当前时间为下午2:24,但显示为下午2:00,应显示2:30PM@Prady这是因为为了测试目的,我将值硬编码为下午2:00,时间与我所在的位置不同。试试最新的小提琴,我不懂。fiddle中代码的值返回下午14:30,my select返回下午2:30