一尘不染

JavaScript的getDate返回错误的日期

javascript

以下脚本返回20而不是21!

var d = new Date("2010/03/21");
document.write(d.getDate());

我究竟做错了什么?这是JavaScript错误吗?


阅读 719

收藏
2020-05-01

共1个答案

一尘不染

Date.parse方法依赖new Date(string)于实现(等效于Date.parse(string))。

虽然此格式将在现代浏览器中可用,但您不能百分百确定浏览器将正确解释您所需的格式。

我建议您处理您的字符串,并将Date构造函数与年,月和日参数一起使用:

// parse a date in yyyy-mm-dd format
function parseDate(input) {
  var parts = input.match(/(\d+)/g);
  // new Date(year, month [, date [, hours[, minutes[, seconds[, ms]]]]])
  return new Date(parts[0], parts[1]-1, parts[2]); // months are 0-based
}
2020-05-01