TypeScript 2 : 獲取當前日期及前後範圍日期【Array】

CRPER發表於2017-02-15

前言

今天有個介面欄位需求,要寫一個今天及前幾天的日期傳過去;
在網上找了下都木有什麼比較好的方案;就自己寫了一個。
因為技術棧就是NG2+TS2+WEBPACK,這裡的程式碼需要一定的TS2及ES6的基礎複製程式碼

# 程式碼

/**
   * @param {number} range
   * @param {string} [type]
   * @memberOf VehicleOverviewComponent
   * @description 獲取今天及前後天
   */
  getRangeDate( range: number, type?: string ) {

    const formatDate = ( time: any ) => {
      // 格式化日期,獲取今天的日期
      const Dates = new Date( time );
      const year: number = Dates.getFullYear();
      const month: any = ( Dates.getMonth() + 1 ) < 10 ? '0' + ( Dates.getMonth() + 1 ) : ( Dates.getMonth() + 1 );
      const day: any = Dates.getDate() < 10 ? '0' + Dates.getDate() : Dates.getDate();
      return year + '-' + month + '-' + day;
    };

    const now = formatDate( new Date().getTime() ); // 當前時間
    const resultArr: Array<any> = [];
    let changeDate: string;
    if ( range ) {
      if ( type ) {
        if ( type === 'one' ) {
          changeDate = formatDate( new Date().getTime() + ( 1000 * 3600 * 24 * range ) );
          console.log( changeDate );
        }
        if ( type === 'more' ) {
          if ( range < 0 ) {
            for ( let i = Math.abs( range ); i >= 0; i-- ) {
              resultArr.push( formatDate( new Date().getTime() + ( -1000 * 3600 * 24 * i ) ) );
              console.log( resultArr );
            }
          } else {
            for ( let i = 1; i <= range; i++ ) {
              resultArr.push( formatDate( new Date().getTime() + ( 1000 * 3600 * 24 * i ) ) );
              console.log( resultArr );
            }
          }

        }
      } else {
        changeDate = formatDate( new Date().getTime() + ( 1000 * 3600 * 24 * range ) );
        console.log( changeDate );
      }
    }
  }複製程式碼

呼叫及結果

  1. range引數支援正負數,裡面也加了判斷;
  2. type【為可選引數】有兩種,一個是字串one,一個是more;前者返回一個指定的日期;後者返回一個排序好的範圍
    getRangeDate( -6 );// 結果:2017-02-09
    getRangeDate( -6, 'one' );// 結果:2017-02-09複製程式碼
    getRangeDate( -6, 'more' );
    // 結果
    // ["2017-02-09", "2017-02-10", "2017-02-11", "2017-02-12", "2017-02-13", "2017-02-14", "2017-02-15"]複製程式碼

總結

就是用時間戳進行換算,然後通過內建函式獲取對應欄位進行拼接,,這裡沒有帶時分秒,有興趣的可以加個可選引數把時分秒帶上。。因為我這裡不需要用到,所以我就沒加進去了。。

結果集為陣列,但不僅限於陣列,也可以改成物件。。看你們喜歡啦

相關文章