Date 构造函数接受任何值。如果参数的原始 [[value]] 是数字,则创建的日期具有该值。如果原始 [[value]] 是 String,则规范仅保证 Date 构造函数和 parse 方法能够解析 Date.prototype.toString 和 Date.prototype.toUTCString() 的结果
设置 Date 的一种可靠方法是构造一个并使用setFullYear
和setTime
方法。
一个例子出现在这里:http :
//jibbering.com/faq/#parseDate
ECMA-262 r3 没有定义任何日期格式。将字符串值传递给 Date 构造函数或 Date.parse 具有依赖于实现的结果。最好避免。
编辑:
comp.lang.javascript FAQ 中的条目是:可以将扩展的 ISO 8601 本地日期格式YYYY-MM-DD
解析为Date
以下内容:-
/**Parses string formatted as YYYY-MM-DD to a Date object.
* If the supplied string does not match the format, an
* invalid Date (value NaN) is returned.
* @param {string} dateStringInRange format YYYY-MM-DD, with year in
* range of 0000-9999, inclusive.
* @return {Date} Date object representing the string.
*/
function parseISO8601(dateStringInRange) {
var isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/,
date = new Date(NaN), month,
parts = isoExp.exec(dateStringInRange);
if(parts) {
month = +parts[2];
date.setFullYear(parts[1], month - 1, parts[3]);
if(month != date.getMonth() + 1) {
date.setTime(NaN);
}
}
return date;
}