import {Injectable} from '@angular/core';
|
|
import * as moment from 'moment';
|
import { TimePeriod } from '@business/entity/data';
|
import { TimeUnits } from '@business/enum/types.enum';
|
|
|
type baseUnitOfMoment = moment.unitOfTime.Base;
|
@Injectable()
|
export class DateService {
|
date_format(date: string, format: string) {
|
return moment(date).format(format);
|
}
|
|
today(format: string) {
|
return moment().format(format);
|
}
|
/**
|
* 获取时间区间,粒度数值
|
*/
|
countTimeRange(timePeriod: TimePeriod): number {
|
let timeUnit: baseUnitOfMoment = 'day';
|
timeUnit = <baseUnitOfMoment>timePeriod.timeUnits.toLowerCase();
|
const start = moment(timePeriod.startTime);
|
const end = moment(timePeriod.endTime);
|
return end.diff(start, timeUnit) + 1;
|
}
|
makeTimeList(timePeriod: TimePeriod): string [] {
|
const start = moment(timePeriod.startTime);
|
const end = moment(timePeriod.endTime);
|
const timeList: string[] = [];
|
let timeUnit: baseUnitOfMoment = 'day';
|
let formatStyle = '';
|
switch (timePeriod.timeUnits) {
|
case TimeUnits.YEAR:
|
formatStyle = 'YYYY';
|
timeUnit = 'year'; break;
|
case TimeUnits.MONTH:
|
formatStyle = 'YYYY-MM';
|
timeUnit = 'month'; break;
|
case TimeUnits.DAY:
|
formatStyle = 'YYYY-MM-DD';
|
timeUnit = 'day'; break;
|
case TimeUnits.HOUR:
|
formatStyle = 'YYYY-MM-DD HH';
|
timeUnit = 'hour'; break;
|
case TimeUnits.MINUTE:
|
formatStyle = 'YYYY-MM-DD HH:mm';
|
timeUnit = 'minute'; break;
|
}
|
while (start.valueOf() < end.valueOf()) {
|
const outTime = start.format(formatStyle);
|
timeList.push(outTime);
|
start.add(1, timeUnit);
|
}
|
return timeList;
|
}
|
}
|