简短回答:使用上面的代码,现在大多数人都会收到6 的警报,因为 Chrome 和 Firefox 现在可以理解这种格式。它是 6 而不是 7,因为Dates 将月份理解为以 0 开头的索引,所以 0 是一月,1 是二月,2 是三月,等等。所以最简单的解决方法是:
var d=new Date("2012-07-01 00:00:00.0");
var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
var monthIndex = d.getMonth();
alert(months[monthIndex]);
(请考虑使用不同的方法来构建日期!)
长答案:
var d=new Date("2012-07-01 00:00:00.0");
问题是你得到一个无效的日期对象,因为浏览器不理解那个字符串。浏览器对此并不一致 - Chrome 和 Firefox 实际上正确解析它并会提醒6 而不是NaN。但是,不精确的格式仍然不是一个好主意 - 例如,当前的 Safari 不解析它。 https://www.rfc-editor.org/rfc/rfc2822#section-3.3 中描述了保证有效的格式。
你可能更喜欢使用这个构造函数:
new Date(year, month[, date[, hours[, minutes[, seconds[, milliseconds]]]]]);
在您的示例中,您可以这样称呼它:
var d=new Date(2012, 6, 1);
请注意 6 而不是 7! Dates 将月份理解为以 0 开头的索引,因此 0 是一月,1 是二月,2 是三月等。这在使用日期构造函数时会令人困惑,但更容易转换为要求的July:
var d=new Date(2012, 6, 1);
var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
var monthIndex = d.getMonth();
alert(months[monthIndex]);
您可以在此处了解有关Date 的更多信息:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date