JavaScript新的Date()比较

时间:2018-03-08 07:48:48

标签: javascript

这是我的代码,

collections.Counter

在此加入日期和birthdayDate采用d-m-y格式。所以我使用拆分更改为y-m-d格式并比较这两个日期。但它没有像我预期的那样发挥作用。

这有什么不对吗?

2 个答案:

答案 0 :(得分:1)

你的脚本几乎可以运作。 Date()期望参数为Integers。所以你应该使用parseInt来使用前导零来强制转换字符串。

更多:你确定,Joindate应该早于Birthdate吗?



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");
  }
  
&#13;
&#13;
&#13;

但您也可以直接将日期字符串传递给Date对象:

var jd = new Date(joiningDate); 

请参阅此处以获取日期对象的说明:

  

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

答案 1 :(得分:0)

将时间部分设为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 ) );