2012-03-08 37 views

回答

2

谢谢大家!没有找到任何上述工作,但最终让它工作。不得不破解一点;)

我通过使用getMonth,getDate和getYear分解Date并解析它然后进行比较来完成的。它的工作原理就像我想:

Date.parse(document.getElementById("DateId").value) < Date.parse(dateToday.getMonth() + "/" + dateToday.getDate() + "/" + dateToday.getYear()) 
1

看那Date object文档。

您需要一个带有输入日期的Date对象(使用构造函数或setMonth等方法),并且使用当前日期(构造函数没有参数)。然后,您可以使用getTime获取这两个对象上的UNIX时间戳并进行比较。

0

看看http://www.datejs.com/。它将帮助您使用标准日期操作

+0

Datejs是矫枉过正简单日期比较,尤其是当日期是已知的格式。这只是不值得包括*另一个*库。它让我感到更像是一个玩具应用程序 - 一开始令人印象深刻,但是当尝试一些真实世界的日期自然语言表示时,它不够强大。如“十点钟”,“今晚六点”,“距离今天两天”。它自2007年以来一直没有更新,所以没有太多希望增加稳健性。 – gilly3 2012-03-08 23:39:33

+0

那么,我明白你的意思,但是如果你想做正确的话,在JavaScript中做日期的东西可能需要很多时间。我认为使用外部库是值得的额外费用,但我同意它必须是一个维护和稳定的。我个人并没有用datej做很多工作,所以我只能假设你是对的。自己构建这些类型的东西是反效果的,所有新代码都包含错误,所以我总是尝试重用现有的和测试过的东西。 – koenpeters 2012-03-09 00:33:26

3

使用new Date(dateString)将字符串转换为日期。然后使用today.setHours(0, 0, 0, 0)标准化今天的日期以省略时间信息。然后,你可以比较的日期,你有以上:

var date = new Date(dateInput); 
if (isNaN(date)) { 
    alert("please enter a date"); 
} 
else { 
    var today = new Date(); 
    today.setHours(0, 0, 0, 0); 
    date.setHours(0, 0, 0, 0); 
    var dateTense = "present"; 
    if (date < today) { 
     dateTense = "past"; 
    } 
    else if (date > today) { 
     dateTense = "future"; 
    } 
    alert("You entered a " + dateTense + " date"); 
} 

演示:http://jsfiddle.net/w2sJd/

+0

这对我有用。 – 2016-01-20 20:43:34

-3
function compareDate(inputDateString) { 
    var inputDate, now; 
    inputDate = new Date(inputDateString); 
    now = new Date(); 
    if (inputDate < now) { 
    console.log("You entered past date"); 
    } 
    else if (inputDate > now) { 
    console.log("You entered future date"); 
    } 
    else if (inputDate === now) { 
    console.log("You entered present date"); 
    } 
    else { 
    console.log("please enter a date"); 
    } 
} 
+3

由于两个原因,这对今天的日期不适用。首先,您是通过参考而不是按价值来比较。 'inputDate'不会引用与'now'相同的Date对象,尽管它们的值可能相等。其次,通过解析'MM/dd/yyyy'创建的日期将有小时,分钟,秒和ms等于'0',而'new Date()'将包含时间信息(每天1毫秒除外) 。 – gilly3 2012-03-08 23:30:20

相关问题