使用javascript比较两个日期

Tar*_*zan 5 javascript date

我有两个日期,其中一个是dd-mm-yyyy hh:mm格式,另一个是dd-mm-yyyy (D1)格式fristly我将dd-mm-yyyy hh:mm格式日期拆分为get dd-mm-yyyy (D2)format然后我比较日期D2和D1像

var D1 = new Date(); 
var D2 = new Date(); 
// D1 = 03-05-2014  this date take as an example
// D2 = 28-04-2014 00:00  this date take as an example
// D1 and D2 are taken by input fields.
    split the D2 date

dat = D2.split(' ');
D2 = dat[0];
//finally D2 is 28-04-2014
if(D2<=D1)
{
  echo "ok";
}
else{
  echo "something is wrong";
}
Run Code Online (Sandbox Code Playgroud)

我总是得到其他部分,这是因为我分裂之日起,28-04-2014 00:0028-04-2014

小智 7

dateFirst = D1.split('-');
dateSecond = D2.split('-');
var value = new Date(dateFirst[2], dateFirst[1], dateFirst[0]); //Year, Month, Date
var current = new Date(dateSecond[2], dateSecond[1], dateSecond[0]);
Run Code Online (Sandbox Code Playgroud)

而不是使用if条件

if(D2<=D1)
{
console.log('ok');
}
else
{
console.log('something is wrong');
}
Run Code Online (Sandbox Code Playgroud)


und*_*ore 5

这实际上是你需要的

var D1 = "03-05-2014";
var D2 = "28-04-2014 00:00";

if ((new Date(D1).getTime()) >= (new Date(D2).getTime())) {
    alert('correct');
} else {
    alert('wrong');
}
Run Code Online (Sandbox Code Playgroud)

工作演示

  • 由于_valueOf_ a _Date_的定义方式,您不需要_getTime_ (2认同)

Abi*_*oso 3

这是您正在进行的字符串比较,而不是日期比较

就字符串而言... 2 大于 0... 这就是为什么你总是会遇到“出了问题”的语句

编辑:这是对出错原因的解释 // 创建日期变量 var D1 = new Date();

// Creates another date variable
var D2 = new Date();

// Converts this date variable into a string
D1 = 03-05-2014 

// This is too is converted into a string
D2 = 28-04-2014 00:00

    dat = D2.split(' ');
D2 = dat[0];

//finally D2 is 28-04-2014  <-- true, but it is a string
if(D2<=D1){    //   <-- At this point you are doing a string comparison

        echo "ok";

} else {

    echo "something is wrong";

}
Run Code Online (Sandbox Code Playgroud)

编辑:这是一个可能的解决方案。。。

相反,这样做

var D1 = new Date();
var D2 = new Date();

if(D2.getTime() <= D1.getTime()){
    echo "ok";
} else {
    echo "something is wrong";
}
Run Code Online (Sandbox Code Playgroud)

编辑:如果您从输入字段获取它,则执行此操作

// Make sure you dates are in the format YYYY-MM-DD.
    // In other words, 28-04-2014 00:00 becomes 2014-04-28 00:00
// Javascript Date only accepts the ISO format by default
var D1 = new Date( $('#input1#').val() );
var D2 = new Date( $('#input2#').val() );

    if(D2.getTime() <= D1.getTime()){
    echo "ok";
} else {
    echo "something is wrong";
}
Run Code Online (Sandbox Code Playgroud)