我有一个日期类型的输入,我正在获取输入值,我需要比较下一个输入值是否为+1天。我不知道该怎么做。
我尝试过:
是我的html:
<input type="date" class="form-control" data-model="startDate">
<input type="date" class="form-control" data-model="endDate">
在我的js中,我设置为变量输入:
var start_dates = $("#periodTable :input[data-model='startDate']");
var end_dates = $("#periodTable :input[data-model='endDate']");
然后我得到了它们的值:
var end_date = $(end_dates).val();
var start_date = $(start_dates).val();
我在控制台上获得start_date的值:
2018-12-10
我需要比较下一个输入值是否是2018-12-11。
在这里,我尝试使用
来获取此输出的日部分var start_date_day = start_date.substring(8, 10);
一切正常,我得到: 10
if (start_date_day != start_date_day + 1) {
}
但是这种情况无法正常工作,因为我收到 start_date_day + 1 = 11
答案 0 :(得分:0)
不确定这是否是最有效的方法,但它应该对您有用。如果下一个输入值为+1,则compute()
函数将返回true。您可以重用逻辑。我已经为两个输入字段添加了id
属性。我也不使用jQuery
,而是使用本机JS,可以根据需要将其转换为jQuery
语法。
我已经为此创建了一个JSFiddle
。 https://jsfiddle.net/mazpxcut/
<html>
<body>
<input
id="start_date"
type="date"
class="form-control"
data-model="startDate"
/>
<input
id="end_date"
type="date"
class="form-control"
data-model="endDate"
/>
<button onclick="showVal()">Show</button>
</body>
<script>
function showVal() {
console.log(compute());
}
function compute() {
var start_date_arr = document
.getElementById("start_date")
.value.split("-");
var end_date_arr = document.getElementById("end_date").value.split("-");
var start_date = start_date_arr.pop();
var end_date = end_date_arr.pop();
if (JSON.stringify(start_date_arr) !== JSON.stringify(end_date_arr))
return false;
else return end_date - start_date == 1;
}
</script>
</html>
答案 1 :(得分:0)
JavaScript中的日期工作方式不同,您可以参考此link以获得更多详细信息 您可以执行以下操作:
var end_date = $(end_dates).val();
var start_date = $(start_dates).val();
var ed = new Date(end_date);//this will convert end_date in milliseconds and store it in ed variable
var sd = new Date(start_date);
sd.setDate(sd.getDate() + 1);//sd now contains a date that is one day ahead of start_date
//now you can check if ed not equal to sd
if(ed != sd){
//do what u want
}