我有这个代码,我想检查过去的日期。我希望在表单提交之前立即检查它。
<input id="datepicker" onchange="checkDate()" required class="datepicker-input" type="text" data-date-format="yyyy-mm-dd" >
<script type="text/javascript">
function checkDate() {
var selectedDate = document.getElementById('datepicker').value;
var now = new Date();
if (selectedDate < now) {
alert("Date must be in the future");
}
}
</script>
这不起作用,如果我输入过去的日期(例如2014-12-03),则不会显示警告。
答案 0 :(得分:14)
您需要做的就是使用日期构造函数<input>
将new Date("2014-06-12")
生成的字符串转换为日期
function checkDate() {
var selectedText = document.getElementById('datepicker').value;
var selectedDate = new Date(selectedText);
var now = new Date();
if (selectedDate < now) {
alert("Date must be in the future");
}
}
<input id="datepicker" onchange="checkDate()" required class="datepicker-input" type="date" data-date-format="yyyy-mm-dd" >
答案 1 :(得分:1)
date()
函数返回一个字符串。首先尝试使用Date.parse()
函数将两个日期转换为整数:
<input id="datepicker" onchange="checkDate()" required class="datepicker-input" type="text" data-date-format="yyyy-mm-dd" >
<script type="text/javascript">
function checkDate() {
var selectedDate = document.getElementById('datepicker').value;
var now = new Date();
var dt1 = Date.parse(now),
dt2 = Date.parse(selectedDate);
if (dt2 < dt1) {
alert("Date must be in the future");
}
}
</script>
答案 2 :(得分:0)
您的代码非常接近,请尝试使用此代码:
var selectedDate = $('#datepicker').datepicker('getDate');
var now = new Date();
if (selectedDate < now) {
// selected date is in the past
}
答案 3 :(得分:0)
对于那些使用type =&#34; date&#34; (用HTML5引入)而不是type =&#34; text&#34;,它可以这样做:
function checkDate() {
var date = this.value;
if(date.valueAsDate <= new Date()) {
//Date in the past
} else {
//Date in the future
}
}
答案 4 :(得分:0)
简单的防雷功能正常工作...
function check_not_past_date_time(enter_date) {
var a =new Date(enter_date);
var now =new Date();
if(a>now){
return true;
}else {
return false;
}
}
答案 5 :(得分:0)
您可以使用
_isDate1LowerThanDate2(date1, date2) {
return new Date(date1) < new Date(date2);
}
答案 6 :(得分:0)
在比较日期之前,应将它们设置为 0 小时。这将确保它们之间的差异是 1 天的倍数。
const isPastDate = (date) => {
const specificDate = new Date(date).setHours(0, 0, 0, 0);
const today = new Date().setHours(0, 0, 0, 0);
return specificDate < today;
}
console.log(isPastDate("2021-08-10T23:59:00"));