此功能在Chrome中正常运行......但不是IE或FF。
我正在尝试验证两个采用MonthName YearNumber值的字段(参见屏幕截图)。
form http://i50.tinypic.com/2ibjl3c.gif
我使用Date.parse()
获取毫秒,然后比较Start Date
< = End Date
。
function IsStartEndDtError(StartDt, EndDt) {
//convert dates to miliseconds to compare if one is greater than other
var StartDtMili = Date.parse(StartDt);
var EndDtMili = Date.parse(EndDt);
if (StartDtMili <= EndDtMili) {
return false;
}
else {
return true;
}
}
Firebug中出现的内容:
答案 0 :(得分:2)
由于您的日期所在的格式不受普遍支持,您可以尝试使用Date.js这样的库:
Date.parse("November 2012")
// returns: Thu Nov 01 2012 00:00:00 GMT+0000 (GMT)
如果您不想要其他库,可以手动将月份名称替换为数字并创建新的日期字符串。
如果您查看the spec中的“第15.9.1.15节日期时间字符串格式”,则Ecmascript似乎不支持完整的月份名称。
在Firefox中:
new Date("November 2012")
// Invalid Date
new Date("2012-11")
// Thu Nov 01 2012 00:00:00 GMT+0000 (GMT)
第二种日期格式应该跨浏览器标准化,第一种不是。
答案 1 :(得分:1)
11 1999
,November 1999
不是可解析的格式。您需要使用更灵活的日期库及其输入格式,或处理您的输入并识别其中的部分:
function IsStartEndDtError(StartDt, EndDt) {
var months = {
January: 0,
February: 1,
...
};
//convert dates to miliseconds to compare if one is greater than other
var StartDtMili = (new Date(StartDt.split(" ")[1], month[StartDt.split(" ")[0]])).getTime();
var EndDtMili = (new Date(EndDt.split(" ")[1], month[EndDt.split(" ")[0]])).getTime();
if (StartDtMili <= EndDtMili) {
return false;
}
else {
return true;
}
}