考虑以下HTML和JavaScript代码

<!DOCTYPE html>
<html>
<body>
    <script>
        var str = "20990229";
        var showDate = new Date();
        showDate.setFullYear(str.substring(0, 4))
        showDate.setMonth(parseInt(str.substring(4, 6), 10) - 1)
        showDate.setDate(str.substring(6, 8))
        document.write(showDate)
    </script>
</body>
</html>


输出:


  2099年3月1日星期五,格林尼治标准时间+0530(印度标准时间)


输出不正确,我不知道哪里出错了。

谁能告诉我我要去哪里错了?

最佳答案

输出与应有的完全一样:

var str = "20990229";
var showDate = new Date();

showDate.setFullYear(str.substring(0, 4)); // Set year to 2099
showDate.setMonth(parseInt(str.substring(4, 6), 10) - 1); // Set month to 1
showDate.setDate(str.substring(6, 8)); // Set date to 29


那将是2099年2月29日。(请注意,月份从0开始索引)。

由于2099年不是a年,因此没有2月29日,该日期对应于3月1日。

如果将年份更改为is年(例如2096),则输出将如您所愿。这是an example

10-05 20:30