2010-02-03 112 views
2

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

+0

您是否尝试过在网页上搜索与使用JavaScript验证日期相关的页面? – Lazarus 2010-02-03 12:08:06

回答

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 
0

对日期格式和验证的本地JavaScript支持有所限制。

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

如果您的应用程序将需要日期操作方法,你可以做的东西一样Date.parse(“我的日期字符串”)

3

,你可能要考虑使用的东西像Datejs库。

如果您选择Datejs,则可以使用parseExact()方法进行验证。如果日期有效,它将返回一个日期对象;如果日期无效,则返回null。

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对象,或者为空,如果字符串不与指定模式相匹配。这可以使用固定语言或任何本地语言。

虽然日期选择器将它用作序列化日期格式似乎不太合适。它应该使用更容易解析的东西,如ISO8601 representation