沈斌
2018-03-13 9c9b8250b973eea72f6970e1ceb46facca9f0a99
src/app/business/services/util/date.service.ts
@@ -1,6 +1,8 @@
import {Injectable} from '@angular/core';
import * as moment from 'moment';
import { TimePeriod } from '@business/entity/data';
import { TimeUnits } from '@business/enum/types.enum';
@Injectable()
export class DateService {
@@ -12,4 +14,52 @@
  today(format: string) {
    return moment().format(format);
  }
  /**
   *  获取时间区间,粒度数值
   */   countTimeRange(timePeriod: TimePeriod): number {
     let timeUnit = 0;
    switch (timePeriod.timeUnits) {
      case TimeUnits.YEAR:
      timeUnit = 1000 * 60 * 60 * 24 * 30 * 12; break;
      case TimeUnits.MONTH:
      timeUnit = 1000 * 60 * 60 * 24 * 30; break;
      case TimeUnits.DAY:
      timeUnit = 1000 * 60 * 60 * 24; break;
      case TimeUnits.HOUR:
      timeUnit = 1000 * 60 * 60; break;
      case TimeUnits.MINUTE:
      timeUnit = 1000 * 60; break;
    }
     return Math.floor((timePeriod.endTime.getTime() - timePeriod.startTime.getTime()) / timeUnit);
   }
   makeTimeList(timePeriod: TimePeriod): string [] {
    const start = moment(timePeriod.startTime);
    const end = moment(timePeriod.endTime);
    const timeList: string[] = [];
    let timeUnit: moment.DurationInputArg2 = '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;
    }
    do {
     const outTime = start.format(formatStyle);
     timeList.push(outTime);
     start.add(1, timeUnit);
    }while (start.valueOf() < end.valueOf());
    return timeList;
   }
}