JavaScript獲取某月和某周的日期範圍(ionic3)

最近工作中,用到一個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;
  }

親測有效,利用這個特性在以後月份的計算中就會省力很多。如果大家有什麼更好的方法,歡迎交流探討~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章