我正在创建一个自定义的ASP.Net验证器,用于检查输入的数据是否为非工作日。检查日期是否匹配javascript
“非工作日”的定义是:
- 的日期或者是周六或周日
- 日期为节假日
我编写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;
}
任何人有想法,为什么这两个日期都不会被视为比赛吗?
的日期比较和分析处理的时候,我会强烈建议您使用外部库。这个很好用:https://code.google.com/p/datejs/ – Saturnix
另一种选择是[node-date-utils](https://github.com/JerrySievert/node-date-utils/blob /master/lib/date-utils.js)lib(可在浏览器中使用)。 – jabclab
如果你已经在服务器端正常工作,只需使用AJAX进行验证即可。额外的要求,但少了头痛。 –