找到HTML日期,然后比较当前数据

时间:2011-09-20 18:17:02

标签: javascript jquery

我需要在图书馆卡即将到期或已过期时提醒顾客。他们看到的页面始终以这种格式显示其截止日期:

EXP DATE:10-08-2011

EXP DATE:mm-dd-yyyy

首先,我需要抓住那个日期并将其与今天的日期进行比较。然后,我需要以某种方式提醒顾客他们的卡片将在30天内到期,或者让他们知道他们的卡片已经过期。

如何从字符串中获取该日期? 我如何将其与今天的日期进行比较? 如何在未来和过去的不到30天之间进行比较? 如何为每个场景创建警报?

我不是在寻找一个完整的解决方案,只是为了指向正确的方向。

非常感谢任何帮助,

克恩

这就是我最后为日期拆分和比较做的事情。作为一个完整的新手,它更容易概念化。但是,请随时提供建议和更简洁的方法来执行此操作...现在我只需要弄清楚如何从html中“抓住”日期。

感谢您的帮助!

克恩

//below split date on hyphens

var s = '10-3-2011';
var fields = s.split(/-/);
var month = fields[0];
var day = fields[1];
var year = fields[2];

//below replace hyphens with slashes
var slashDate = (month + "/" + day + "/" + year)

// below convert string to date
var patexpDate = new Date(slashDate);

//below get todays date
var todaysDate = new Date();

//below patron expiration date minus todays date
var diffDates = (patexpDate - todaysDate)


if (diffDates >= 0 && diffDates <= 2592000000) {
alert('Your Library card expires in less than 30 days.');

}

else if (diffDates < 0) {
alert("Your Library card has expired.");

}

else alert('Card NOT expired.');

2 个答案:

答案 0 :(得分:2)

基本上,您只需要从元素的HTML中获取日期组件。

 var dateString = someElement.innerHTML;

然后,通过分隔符将其拆分并拉出每个组件:

 var components = dateString.split('-');

 var day = components[1];
 var month = components[0];
 var year = components[2];

然后,使用该数据创建一个新的Date对象:

 var expirationDate = new Date(day, (month - 1), year); 
 // Remember, JavaScript uses 0-11 to represent months!

然后,获取当前日期,然后执行一些简单的数学运算来确定日期范围:

 var now = new Date();

 if(now.getTime() >= expirationDate.getTime())
 {
     // Exp Date is in the past
 }
 else
 {
     // Exp date in the future
 }

这应该让你开始。

答案 1 :(得分:0)

有一种更简单的方式来获取您的到期日期。 Javascript允许您通过传入字符串变量来构造日期。所以你可以这样做。

var exDateString = dateElem.innerHtml, // comes out to your date as a string 10-08-2011
    exDateObj = new Date(exDateString), // gives a data object with your expiration date
    today = new Date();

现在开始,你可以做一个简单的检查,看看它是否已经过了普通的操作符。

if (exDateObj >== today) { // if expiration date is greater than or equal to today
    alert('Your card is expired');
}

不确定是否可以获得直到它过期的天数,但是你可以通过if / else语句来编写差异方案。

忘了链接这个,这是JavaScript日期的mozilla开发页面参考:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date