/* * @Author: 疯狂秀才(Lucas Huang) * @Date: 2019-09-02 17:55:57 * @LastEditors: 疯狂秀才(Lucas Huang) * @LastEditTime: 2019-10-23 16:57:28 * @QQ: 1055818239 * @Version: v0.0.1 */ import { format, isValid, parseISO } from 'date-fns'; import { Injectable } from '@angular/core'; import { MyDateConverter } from './myDateConverter'; @Injectable({ providedIn: 'root' }) export class DateTimeHelperService { private $D = null; constructor() { this.$D = new MyDateConverter(); } /** * @param value 要转换格式的日期 * @param fmt 格式化字符串 * * 更多的格式化请参考 * [点我点我](https://date-fns.org/v1.30.1/docs/format) */ formatTo(value: any, fmt: string = 'yyyy-MM-dd') { if (!value) { return ''; } if (typeof value === 'string' && value.indexOf('0001') > -1) { return ''; } if (value instanceof Date) { return format(value, fmt); } let _d: any = parseISO(value); if (_d == 'Invalid Date') { _d = this.createDate(value) || new Date(value); } // const d = parseISO(value); if (isValid(_d)) { const d = parseISO(format(_d, 'yyyy-MM-dd HH:mm:ss')); return format(d, fmt); } else { throw new Error('给定的值不能转换为日期'); } } private createDate(val) { return this.$D.create(val); } }