2011-09-20 99 views
0

當庫卡即將或過期時,我需要提醒顧客。他們總是看到頁面顯示這種格式的到期日期:查找HTML日期然後與當前數據進行比較

EXP日期:2011年10月8日

EXP日期: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.'); 
+0

看看http://stackoverflow.com/questions/1663999/javascript-test-if-date-in-string -format即是多高於30天前 –

回答

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 
} 

這應該讓你開始。

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

相關問題