1 /**Parses string formatted as YYYY-MM-DD to a Date object.
2 * If the supplied string does not match the format, an
3 * invalid Date (value NaN) is returned.
4 * @param {string} dateStringInRange format YYYY-MM-DD, with year in
5 * range of 0000-9999, inclusive.
6 * @return {Date} Date object representing the string.
7 */
8 function parseISO8601(dateStringInRange) {
9 var isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/,
10 date = new Date(NaN), month,
11 parts = isoExp.exec(dateStringInRange);
12
13 if(parts) {
14 month = +parts[2];
15 date.setFullYear(parts[1], month - 1, parts[3]);
16 if(month != date.getMonth() + 1) {
17 date.setTime(NaN);
18 }
19 }
20 return date;
21 }
来源:http://digdeeply.org/archives/04251973.html