您可以将日期字符串解析为ISO字符串(通过将空格转换为"T"并附加Zulu时区,例如" 2011-08-16T12:34:56Z
"),然后将结果日期的ISO字符串与原始ISO字符串进行比较.
function isValidDateString(s) {
try {
var isoStr = (""+s).replace(/ /,'T') + "Z"
, newStr = new Date(isoStr).toISOString();
return isoStr.slice(0,19) == newStr.slice(0,19);
} catch (e) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
这样,如果日期字符串的格式无效,那么字符串"Invalid Date"将不等于原始字符串,如果它要滚动(例如,如果当天该日期无效)那么解析日期的字符串值将不会等于原始字符串.
[编辑]
请注意时区修复所需的示例代码的更改.