为什么我的日期解析不正确?

ste*_*yer 3 javascript

我在2000年1月1日之后解析日期时遇到问题.结果错误地返回.1999年被解析为1999年,当它到2000年它将其解析为0100,然后2001解析为0101等.以下是用于说明此问题的测试代码:

<script type="text/javascript" language="javascript">


// functions incorrect  changes year from 2010 to 0101
var d = (new Date("12/01/2009"));
if (d.getMonth() < 11) 
 { d = new Date(d.getYear(), d.getMonth() + 1, 1); } 
 else
 { d = new Date(d.getYear() + 1, 0, 1); } 
document.write(d);
//  Result:  Sat Jan 01 0101 00:00:00 GMT-0500 (Eastern Standard Time) 

document.write('<br />');


document.write(Date.parse(Date()) < Date.parse(d));
// 
// Result: false  today should definitely be < 01/01/2010


document.write('<br />');


// Functions correctly if year is before 2000

var d = (new Date("12/01/1998"));

if (d.getMonth() < 11) 
 { d = new Date(d.getYear(), d.getMonth() + 1, 1); } 
 else
 { d = new Date(d.getYear() + 1, 0, 1); } 


document.write(d);
//  Result:  Fri Jan 01 1999 00:00:00 GMT-0500 (Eastern Standard Time)  
document.write('<br />');


document.write(Date.parse(Date()) < Date.parse(d));
// false


</script>
Run Code Online (Sandbox Code Playgroud)

Eri*_*lin 5

你需要使用d.getFullYear()而不是d.getYear()

getYear()只给出自1900年以来的年数,显然;)