为什么每次比较日期都会给出错误?

时间:2015-08-03 11:31:14

标签: javascript jquery

我想比较日期。我对每一个条件都是假的。如果第二个日期高于第一个日期,则应显示上述日期。如果第二个日期等于第一个日期则显示相等的日期。如果第二个日期低于第一个日期显示在日期之下

这是我的代码 https://jsfiddle.net/5Lps5zxh/1/

var first="22-3-2015"
var second="01-3-2015";
alert(new Date(first).getTime() > new Date(second).getTime())

if( (new Date(first).getTime() > new Date(second).getTime()))
{
    alert('--')
}

每次都是假的

6 个答案:

答案 0 :(得分:8)

查看此fiddle。 (的 MM-DD-YYYY
看看这个fiddle。 ( YYYY-MM-DD (推荐)

使用 MM-DD-YYYY YYYY-MM-DD 格式,您将遇到 NO 问题。

这是片段。 (的 MM-DD-YYYY



var first = "03-22-2015" //MM-DD-YYYY
var second = "03-01-2015"; //MM-DD-YYYY
alert(new Date(first).getTime() + " ---- " + new Date(second).getTime());
alert(new Date(first).getTime() > new Date(second).getTime())

if ((new Date(first).getTime() > new Date(second).getTime())) {
  alert('--')
}




这是片段。 (的 YYYY-MM-DD



var first = "2015-03-22" //YYYY-MM-DD
var second = "2015-03-01"; //YYYY-MM-DD
alert(new Date(first).getTime() + " ---- " + new Date(second).getTime());
alert(new Date(first).getTime() > new Date(second).getTime())

if ((new Date(first).getTime() > new Date(second).getTime())) {
  alert('--')
}




答案 1 :(得分:3)

如果您尝试alert(new Date(first));,则说它是无效日期。然后,当您执行.getTime()时,它会返回NaN,这永远不会超过其他时间。

答案 2 :(得分:1)

这是来自控制台:

new Date('22-3-2015').getTime() 
NaN

这就是为什么它是假的。

答案 3 :(得分:0)

您需要创建日期变量,而不是尝试强制转换,

我创建了一个jsFiddle给你看

jsFiddle:https://jsfiddle.net/uc9csxk2/

Javascript

var dates = "22-3-2015";
var result = new Date(dates);
alert(result);

var first = new Date(2015,3,22);
var second = new Date(2015,3,1);

alert(first.getTime() > second.getTime())

if( first.getTime() > second.getTime())
{
    alert('--')
}

基本上您的日期字符串“22-3-2015”是无效日期。

答案 4 :(得分:0)

以下代码返回true:

var first="11-13-2015"
var second="10-10-2015";
alert(new Date(first).getTime() > new Date(second).getTime())

为什么?

日期格式为MM-DD-YYYY,因此在上述情况下它返回true

答案 5 :(得分:0)

假设欧洲日期(dd-mm-yyyy)并且假设您无法将它们更改为首选yyyy-mm-dd,您可以这样做以使日期解析正确



var first = "22-3-2015"
var second = "01-3-2015";

function makeDate(str) {
  var parts = str.split("-");
  return new Date(parts[2], parts[1] - 1, +parts[0])
}
alert(makeDate(first) +">"+ makeDate(second))

if ((makeDate(first).getTime() > makeDate(second).getTime())) {
  alert('--')
}