【发布时间】:2018-10-23 10:35:59
【问题描述】:
我用 Javascript 构建了一个小函数来获取当前年份每个月的日期。但是它有一个循环并导致 Chrome 崩溃。
function getMonthsInYearTillNow() {
var today = new Date();
today = new Date(today.setHours(today.getHours(), 0, 0, 0));
today_year = today.getFullYear();
var months = [];
while (today.getFullYear() === today_year) {
console.log(today);
var begin = today;
begin = new Date(begin.setDate(1));
begin = new Date(begin.setHours(0, 0, 0, 0));
var end = today;
end = new Date(end.setMonth(end.getMonth() + 1));
end = new Date(end.setDate(0));
end = new Date(end.setHours(23, 59, 59, 59));
var cacheobj = {
'date': today,
'begin': begin,
'end': end
};
months.push(cacheobj);
today = new Date(today.setMonth(today.getMonth() - 1, 1));
}
return months;
}
也许有人会看到错误。我找不到它。提前致谢。
编辑:我想要一个包含当前年份每个月的日期对象的数组,直到今天。换句话说,从 2018 年 1 月到现在(10 月 18 日),例如:
Array[Date-Object(October),Date-Object(September),..,Date-Object(January)]
我在 while 循环结束时更改了 var 'today'
today = new Date(today.setMonth(today.getMonth() - 1, 1));
我为不同类型的时间范围提供了三个其他功能,它们都可以工作,这就是为什么我很困惑并且找不到解决方案:/
【问题讨论】:
-
因为循环无限而崩溃;您永远不会更改
while条件中的任何一个年份值。您要达到的输出是什么?我确信它可以以更简单的方式完成 -
感谢编辑,但仍不清楚。您是否想要从现在开始为接下来的 12 个月(即 Oct-18 到 Sep-19)或当年剩余月份(即 Oct-18、Nov-18 和 Dec-18)的一系列值。您的示例在 1 月结束,鉴于描述,这毫无意义。
-
@RoryMcCrossan 对不起.. :/ 我想要今年过去几个月的值数组。例如10 月 18 日、9 月 18 日、8 月 18 日等。换句话说:从 2018 年 1 月到现在。
标签: javascript jquery date