Javascript日期验证

时间:2010-02-03 12:03:44

标签: asp.net javascript

如何使用Javascript验证特定格式的日期字符串? 我有一个日期选择器,其显示格式如“dddd MMMM dd,yyyy”(显示如下:“2010年2月3日星期三”。)所以我必须使用javascript验证这种格式。请帮我实现这个..

4 个答案:

答案 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)

日期格式和验证的原生JavaScript支持有些限制。

查看http://www.datejs.com/

你可以做Date.parse('我的日期字符串')

之类的东西

答案 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