在JS中,如果使用new Date()时传入字符串参数,如:
<pre name="code" class="javascript">var date = new Date("2015-04-08");
在chrome、Firefox下会返回对应的日期,但是在IE8及以下,会返回NaN;在Safari下会返回Invalid 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;
}
使用时,把日期字符串作为参数传给该方法即可。
var date = parseISO8601("2015-01-02");
这样就能得到想要的结果了。
参考链接:http://stackoverflow.com/questions/2182246/javascript-dates-in-ie-nan-firefox-chrome-ok
http://jibbering.com/faq/#parseDate