这是我的代码,
var date1 = joiningDate.split('-');
var tempjoiningDate = date1[1] + '-' + date1[0] + '-' + date1[2];
var date2 = birthdayDate.split('-');
var tempbirthdayDate = date2[1] + '-' + date2[0] + '-' + date2[2];
var jd = new Date(date1[0], date1[1] - 1, date1[2]);
var bd = new Date(date2[0], date2[1] - 1, date2[2]);
if (jd <= bd) {
console.log("correct dates");
}
else {
console.log("Incorrect dates");
}
在此加入日期和生日日期采用 d-m-y 格式。所以我使用 split 更改为 y-m-d 格式并比较这两个日期。但它并没有像我预期的那样工作。
这有什么问题吗?
你的脚本几乎可以工作。Date(( 期望参数为整数。因此,您应该使用 parseInt 强制转换带有前导零的字符串。
进一步:你确定,加入日期应该早于出生日期吗?
var joiningDate = '2018-03-08';
var birthdayDate = '1960-01-01';
var date1 = joiningDate.split('-');
var date2 = birthdayDate.split('-');
var jd = new Date(parseInt(date1[0]), parseInt(date1[1]) - 1, parseInt(date1[2]));
var bd = new Date(parseInt(date2[0]), parseInt(date2[1]) - 1, parseInt(date2[2]));
if (jd <= bd) {
console.log("Join Date is earlier");
}
else {
console.log("Birth Date is earlier");
}
但您也可以直接将日期字符串传递给 Date 对象:
var jd = new Date(joiningDate);
有关日期对象的解释,请参阅此处:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
将时间部分设置为0
jd.setHours( 0, 0, 0, 0 );
bd.setHours( 0, 0, 0, 0 );
将条件更改为
if (jd.getTime() <= bd.getTime()) {
编辑
原始比较应按原样工作
if (jd <= bd) {
演示
var joiningDate = "05-02-2018";
var birthDate = "08-01-2016";
var fnToDate = str => {
var items = str.split( "-" );
var date = new Date( items[2], items[1] - 1, items[0] );
date.setHours( 0, 0, 0, 0 );
return date;
};
console.log( fnToDate( joiningDate ) );
console.log( fnToDate( birthDate ) );
console.log( fnToDate( joiningDate ) < fnToDate( birthDate ) );