JavaScript new Date() comparison



这是我的代码,

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 ) );

最新更新