获取第几月时间并作为查询条件
上一篇我们写了获取第几周的开始时间和结束时间,下面我们这边来写一下如何获取第几月的开始时间和结束时间。我这里也是需要进行一个数据筛选,要用本月或者下月来做为一个筛选条件,那下面来看一下怎样做。
//获得某月的天数
function getMonthDays(myMonth) {
var monthStartDate = new Date(nowYear, myMonth, 1);
var monthEndDate = new Date(nowYear, myMonth + 1, 1);
var days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24);
return days;
}
首先我们这上面是写了一个方法,这个方法是用来获取到某个月的一个天数,先写这样的一个方法在这,后面需要调用来确定月的最后一天。这个方法是固定的可以直接复制使用,这就不多说了。
这个下面就是获取到当前的这个日期,拿到当前日、当前月、当前年,我们这里主要是要用当前月,因为我们现在是要获取到当前月的开始时间和结束时间。
//本月日期
var now = new Date(); //当前日期
var nowDayOfWeek = now.getDay(); //今天本周的第几天
var nowDay = now.getDate(); //当前日
var nowMonth = now.getMonth(); //当前月
var nowYear = now.getYear(); //当前年
nowYear += (nowYear < 2000) ? 1900 : 0; //
上面是拿到本地当前的时间,那下面我们就来获取一下当前本地时间的当前月份的开始时间和结束时间,
//本月开始日期
var monthStartDate = new Date(nowYear, nowMonth, 1);
这里呢就是拿到本月的开始日期,直接看括号里面,第一个参数就是上面获取到的当前年,第二个参数就是上面获取到的当前月,最后一个参数1,就是第一天,这样就拿到的本月的第一天就是本月的开始时间。
//本月结束日期
var monthEndDate = new Date(nowYear, nowMonth, getMonthDays(nowMonth));
这里就是本月的结束时间,我们一样看括号里面第一个参数呢是当前年,第二个是当前月就是上面获取到的当前时间的年月把参数放进来就行了,后面一个参数就是最上边我们写的那个获取月份总天数的方法,我们就把获取到的当前的月作为一个参数传到方法里面去,这里能就调用这个方法拿到当前月的总天数作为最后一个参数,也就是说本月的结束日期就是本月的总天数,开始日期是第一天,如果本月有31天那么结束日期就是第31天吗, 所以这里通过获取到本月的总天数来确定本月的结束日期就可以了。
上边写了一个格式化日期的方法,就是把日期变成你想要的一个格式我这里是yyyy-MM-dd的一个格式,下面就是把开始时间和结束时间格式化一下。
//格式化本月的开始时间
var benYueKaiShiShiJian = formatDate(monthStartDate);
//格式化本月结束时间
var benYueJieShuShiJian = formatDate(monthEndDate);
格式化之后就拿到我们需要的一个日期格式了,然后就是传到控制器,进行数据筛选,这个数据筛选我就不写了,可以看我的获取第几周日期和筛选数据那篇文章,是一样的写法。
那下面就来写一下下月的开始时间和下月的结束时间的获取,获取下月的开始日期和下月的结束日期,必须先拿到下个月的时间。所以我们下边就是获取到下个月的时间,首先还是获取到当前的时间,然后重点就是nextMonthDate.setMonth(nextMonthDate.getMonth() + 1); 这一句,这一句的功能就是当前的月份+1,+1就拿到了下月的月份,同样的我们不止可以拿下个月的,+2就是下下个月,-1就是上个月,你就可以根据这一个来拿到你想要的月份。这里我们是要下个月所以就是+1。
//下月日期
var nextMonthDate = new Date(); //当前日期
nextMonthDate.setDate(1);
nextMonthDate.setMonth(nextMonthDate.getMonth() + 1);
var lastYear = nextMonthDate.getYear();//下月的年
var nextMonth = nextMonthDate.getMonth();//下个月的月
到了这一步下面的操作和本月的操作是一样的,把对应的参数传进去就行了,
//下月开始日期
var lastMonthStartDate = new Date(nowYear, nextMonth, 1);
//下月结束日期
var lastMonthEndDate = new Date(nowYear, nextMonth, getMonthDays(nextMonth));
然后同样的格式化一下就行了,这里就不写了,这样你就拿到下月的开始时间和结束时间了。