首页 > 解决方案 > 如何检查使用时间选择器的两个字段的时间差

问题描述

我有两个时间选择器,我需要检查从开始到结束选择的时间是否在正确的范围内,我检查了值差异,但返回的值是 NaN。显示的时间为晚上 8:00 到晚上 10:00 等。

<div class="col-md-2">
<label>Service Start</label>
<input class="form-control timepicker1"  type="text" id="start_time" />
</div>
<div class="col-md-2">
<label>Service End</label>
<input class="form-control timepicker1"  type="text" id="end_time" />
</div>

标签: javascripttimepicker

解决方案


可能不是最好的,因为使用 AM 和 PM 处理时间你需要做更多的工作,你还需要检查 first_time < second_time。您所做的是以秒为单位转换 hh:mm:ss 而不是 new Date() 中的输入秒数,并且可以获得不同的输出。但它应该让你知道它是如何完成的。moment.js 可以让事情变得更容易

var hm_1 = '09:00 PM';   
var hm_2 = '12:00 PM';
var a = hm_1.split(/:| /); // split at : and " "
var b = hm_2.split(/:| /);
// convert hours and minutes into seconds
var sec_1 = a[0] * 60 * 60 + a[1] * 60; 
var sec_2 = b[0] * 60 * 60 + b[1] * 60; 
console.log("convert", hm_1, "and", hm_2, "in", "seconds", sec_1, sec_2);
var date = new Date();
var date = new Date((sec_2 - sec_1) * 1000); //use js new Date () can take s/h/... as input
var hh = date.getUTCHours();  //get hours
var mm = date.getUTCMinutes(); //get minutes
if (hh < 10) {hh = "0"+hh;}
if (mm < 10) {mm = "0"+mm;}
// convert to hh:mm (its a 24h format)
var timeString = hh+":"+mm;
console.log("result", timeString)


推荐阅读