我希望使用JavaScript + jQuery检查一个给定日期是否小于另一个日期。
但是,在检查比给定日期少一天的日期时,不符合条件。
这是我的代码;
$('#payment_date').change(function(){
payment_date_1 = String($("#payment_date").val());
s_date_1 = String($("#s_date").text());
payment_date = new Date(payment_date_1);
s_date = new Date(s_date_1);
if(payment_date<s_date){
alert("please enter a correct date");
$("#payment_date").val("");
}
});
例如:当s_date == '2013-07-02'
和payment_date == '2013-07-01'
条件返回false
而不是true
时。
我的HTML:
<span style="display:none;" id="s_date">2013-07-02</span>
<input type="text" value="" name="payment_data_info[payment_date]" id="payment_date" class="hasDatepicker" readonly="readonly">
请注意;我已检查两个日期是否有效,两个日期是否返回有效日期,条件是否适用于其他实例
我刚刚发现了原因;我正在使用jQuery的日期选择器。小于等于2013-07-10的日期返回的有效日期和日期低于2013-07-10且大于2013-06-30将返回无效日期。知道为什么吗?
答案 0 :(得分:1)
首先检查变量声明是否是问题,而不是检查字符串解析是否返回您期望的日期。也许s_date和payment_date毕竟无效?
我通过直接比较(不知道为什么)也遇到了困难,所以我使用valueOf-function获取值进行比较。
答案 1 :(得分:0)
当然有效;)
payment_date_1 = "2013-07-01";
s_date_1 = "2013-07-02";
payment_date = new Date(payment_date_1);
s_date = new Date(s_date_1);
if(payment_date < s_date){
alert(payment_date + "is lower than " + s_date);
}
检查您的payment_date_1和s_date_1的值,其中至少有一个无法正确解析
答案 2 :(得分:0)
试试这个,我希望它会有所帮助。
$('#payment_date').change(function(){
var payment_date_1 = $("#payment_date").val(); //add var
var s_date_1 = $("#s_date").text(); //add var
var payment_date = new Date(payment_date_1);
var s_date = new Date(s_date_1);
if((payment_date.valueOf())<(s_date.valueOf())){
alert("please enter a correct date");
$("#payment_date").val("");
}
});
答案 3 :(得分:0)
2可能的原因:
1)其中Date被称为具有多个参数的构造函数, 如果值大于其逻辑范围(例如,13为月值或70为分钟值),则将调整相邻值。例如。新日期(2013,13,1)相当于新日期(2014,1,1), (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)
您的日期格式为'dd / MM / yyyy',但新的日期()使用格式为yyyy / dd / mm所以2013-06-30:30是月份,即30个月,然后是06/01/2013 - &gt; 2015年6月6日 你需要改变格式。例如:
var myDate = "2013/01/30"
var split= myDate .split("/");
new Date (split[2],split[1],split[0]);
2)月份()在javascript中的数字0-11。所以01 / 03 / 2013更改为01 / 04 / 2013
int month = myMonth -1; // for example: mymonth = 'March' => month = 2
can use new Date(2013,month,30);
答案 4 :(得分:-1)
PLease创建日期对象,然后检查
var first = new Date($("#s_date").text());
var second = new Date($("#s_date_1").text());
if(first.getTime() < second.getTime()) {
// code
}
答案 5 :(得分:-1)
你可以这样做。
var payment_date_1 = $("#payment_date").val();
var s_date_1 = $("#s_date").text(); or $("#s_date").val();
// IF s_date_1 is a input field then you have to use .val()
对于类型转换String
。你可以做到
var payment_date_1 = $("#payment_date").val().toString();
var s_date_1 = $("#s_date").val().toString();