如何使用Javascript验证特定格式的日期字符串? 我有一个日期选择器,其显示格式如“dddd MMMM dd,yyyy”(显示如下:“2010年2月3日星期三”。)所以我必须使用javascript验证这种格式。请帮我实现这个..
答案 0 :(得分:4)
如果要检查完全该格式,可以使用正则表达式:
var re = new RegExp( '^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday)\\s*(January|February|March|April|May|June|July|August|September|November|December)\\s*(\\d\\d),\\s*(\\d{2,4})$' );
var date = 'Wednesday February 03, 2010';
if ( ( match = date.match( re ) ) != null )
{ // valid
alert( match );
}
或者如果你只是需要知道它是否是一个有效的日期,有什么格式,只需转换它:
var dateSec, dateObj, dateStr = 'Wednesday February 03, 2010';
dateSec = Date.parse( dateStr ); // unix timestamp
if ( dateSec ) // not NaN
dateObj = new Date( dateSec ); // date object
答案 1 :(得分:3)
如果您的应用程序需要日期操作方法,您可能需要考虑使用类似Datejs库的内容。
如果您选择Datejs,则可以使用parseExact()方法进行验证。如果日期有效,它将返回日期对象;如果日期无效,则返回null。
答案 2 :(得分:0)
答案 3 :(得分:0)
Datejs或Dojo可以做到这一点。使用dojo.date.locale.parse:
var dateAsString = "Wednesday February 03, 2010";
var dateObject = dojo.date.locale.parse(dateAsString, {datePattern: "EEEE MMMM dd, yyyy", selector: "date", locale: "en"});
dateObject将包含Date对象,如果字符串与指定的模式不匹配,则返回null。这可以使用固定语言或任何本地语言。
但是,日期选择器将此作为序列化日期格式使用似乎并不正确。它应该使用更容易解析的内容,例如ISO8601 representation。