| 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; | 
|    } | 
| } |