前言
今天有個介面欄位需求,要寫一個今天及前幾天的日期傳過去;
在網上找了下都木有什麼比較好的方案;就自己寫了一個。
因為技術棧就是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 );
}
}
}複製程式碼
呼叫及結果
- range引數支援正負數,裡面也加了判斷;
- 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"]複製程式碼
總結
就是用時間戳進行換算,然後通過內建函式獲取對應欄位進行拼接,,這裡沒有帶時分秒,有興趣的可以加個可選引數把時分秒帶上。。因為我這裡不需要用到,所以我就沒加進去了。。
結果集為陣列,但不僅限於陣列,也可以改成物件。。看你們喜歡啦