2013-07-22 91 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