2013-07-22 92 views
0

我正在創建一個自定義的ASP.Net驗證器,用於檢查輸入的數據是否爲非工作日。檢查日期是否匹配javascript

「非工作日」的定義是:

  1. 的日期或者是週六或週日
  2. 日期爲節假日

我編寫C#的東西併爲錯誤消息和一組假期日期創建了expando屬性。完成之後,我創建了一個包含此代碼的JavaScript函數來檢查無工作日。爲了簡潔,我刪除了其他代碼。

if (sender.NonWorkingDayErrorMessage && sender.Holidays) { 

    // Is weekend 
    if (date.getDay() == 6 || date.getDay() == 0) { 
     sender.innerHTML = sender.NonWorkingDayErrorMessage; 
     return; 
    } 

    // Is holiday 
    var holidays = sender.Holidays.split(";"); 

    for (var i = 0; i < holidays.length; i++) { 

     var h = new Date(Date.parse(holidays[i])); 

     if (h === date) { 
      sender.innerHTML = sender.NonWorkingDayErrorMessage; 
      return; 
     } 
    } 
} 

我的問題是,代碼H ===日期始終是假的 - 這裏的輸出我得到的,當我在26/8/2013添加提醒和類型。

星期一2013年8月26日00:00:00 GMT + 0100(GMT標準時間)=>週一2013年8月26日00:00:00 GMT + 0100(GMT標準時間)=>假

正如你可以看到我解析假期,但我也進一步驗證輸入「日期」像這樣像這樣的功能:

// Deconstruct string and reconstruct 
// as date. 
var parts = args.Value.split("/"); 
var day = parseInt(parts[0],10); 
var month = parseInt(parts[1],10) -1; 
var year = parseInt(parts[2],10); 
var date = new Date(year, month, day); 

// Valid date format but not a valid date 
if (date.getFullYear() !== year || date.getMonth() !== month || date.getDate() !== day) { 
    sender.innerHTML = sender.InvalidErrorMessage; 
    return; 
} 

任何人有想法,爲什麼這兩個日期都不會被視爲比賽嗎?

+0

的日期比較和分析處理的時候,我會強烈建議您使用外部庫。這個很好用:https://code.google.com/p/datejs/ – Saturnix

+0

另一種選擇是[node-date-utils](https://github.com/JerrySievert/node-date-utils/blob /master/lib/date-utils.js)lib(可在瀏覽器中使用)。 – jabclab

+0

如果你已經在服務器端正常工作,只需使用AJAX進行驗證即可。額外的要求,但少了頭痛。 –

回答

1

嘗試這樣

var a = new Date(2013,12,1); 
var b = new Date(2013,12,1); 

a.getTime() === b.getTime() 
+0

只需要與getTime()進行比較; – dotnetnoob