您的位置:首页 > 其它

TypeScript 2 : 获取当前日期及前后范围日期【Array】

2017-02-15 13:23 423 查看

前言

今天有个接口字段需求,要写一个今天及前几天的日期传过去;
在网上找了下都木有什么比较好的方案;就自己写了一个。
因为技术栈就是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"]


总结

就是用时间戳进行换算,然后通过内置函数获取对应字段进行拼接,,这里没有带时分秒,有兴趣的可以加个可选参数把时分秒带上。。因为我这里不需要用到,所以我就没加进去了。。

结果集为数组,但不仅限于数组,也可以改成对象。。看你们喜欢啦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: