最近工作中,用到一个ionic3的日历控件,本身功能比较强大,基本满足了开发的需求,这个在后面的文章中单独做介绍。本章中主要说下获取某月和某周的日期范围。
首先介绍下某周的的日期范围获取,这部分比较简单,直接上代码,在这部分代码中,我用到angular中管道对象DatePipe,作用是日期格式化,之前一直只是在html页面中用到,这次发现在js里,他依然很好用。当然啦,各位也可以用其他方式进行日期的格式化。
constructor(public navCtrl: NavController, public navParams: NavParams,
private datePipe: DatePipe) {}
//一天的毫秒数
const ONE_DAY_SECONDS = 86400000;
/**
* 根据日期获取当前周的日期范围
* @param date
*/
getWeekRange(date: any){
let now = date.getDay();
//每周开始日期
let weekStart = this.datePipe.transform(new Date(date.getTime() - (now-1) * ONE_DAY_SECONDS), 'yyyy-MM-dd');
//每周结束日期
let weekEnd = this.datePipe.transform(new Date(date.getTime() + (7 - now) * ONE_DAY_SECONDS),'yyyy-MM-dd');
}
接下来是计算月的日期范围,这一块本来需要判断年份和月份,步骤就显得比较繁琐。那么这边可以利用Date对象中的一个特点,即日的参数为0时,会自动获取上个月的最后一天的日期。
/**
* 获取当前月的日期范围
* @param date
*/
getMonthRange(date: any){
//获取下个月的月数
let month = date.getMonth() + 1;
let year = date.getFullYear();
if(month === 12){
//当前月为12月时,则年数+1,月份为1月
month = 0;
year = year + 1;
}
//日参数设为0,即可获取上个月最后一天的日期
let d= new Date(year, month, 0);
return d;
}
亲测有效,利用这个特性在以后月份的计算中就会省力很多。如果大家有什么更好的方法,欢迎交流探讨~