/**
 * 时间差计算
 * @param Time1 对比时间
 * @param Time2 时间 默认现在时刻
 * @returns 对象
 * all:[ 是否未来时间 , 年, 日, 时, 分, 秒] 
 */
const TimeDiff = (Time1: Date | string | number, Time2: Date | null | string | number = null) => {
  let D1: Date = new Date(Time1)
  let D2: Date = Time2 ? new Date(Time2) : new Date()
  let DiffT = Number(D2) - Number(D1)
  let Diff: any= {
    ms: DiffT,
    s: Math.trunc((DiffT) / 1000),
    m: Math.trunc((DiffT) / 60000),
    h: Math.trunc((DiffT) / 3600000),
    d: Math.trunc((DiffT) / 86400000),
    y: Math.trunc((DiffT) / 31536000000),
    all:[0, 0, 0, 0, 0, 0]
  }
  DiffT = DiffT / 1000
  if (DiffT < 0) {
    DiffT *= -1
    Diff.all[0] = 1
  }
  Diff.all[1] = Math.trunc(DiffT / 31536000)
  if (Diff.all[1]) DiffT -= Diff.all[1] * 31536000
  Diff.all[2] = Math.trunc(DiffT / 86400)
  if (Diff.all[2]) DiffT -= Diff.all[2] * 86400
  Diff.all[3] = Math.trunc(DiffT / 3600)
  if (Diff.all[3]) DiffT -= Diff.all[3] * 3600
  Diff.all[4] = Math.trunc(DiffT / 60)
  if (Diff.all[4]) DiffT -= Diff.all[4] * 60
  Diff.all[5] = Math.trunc(DiffT)
  return Diff
}
console.table(
  TimeDiff(
    '1987-5-8 8:8:8 '
  )
);

let AAAA = TimeDiff('2023-1-8 8:8:8 ', '2029-2-9 9:9:9 ')
console.log('2023-1-8 8:8:8 ', '2029-2-9 9:9:9 ', AAAA.all[1] + '年' + AAAA.all[2] + '天' + AAAA.all[3] + '小时' + AAAA.all[4] + '分钟' + AAAA.all[5] + '秒 ' + (AAAA.all[0] ? ' 前' : ' 后'));
AAAA = TimeDiff('2023-1-8 8:8:8 ', '2021-2-9 9:9:9 ')
console.log('2023-1-8 8:8:8 ', '2021-2-9 9:9:9 ', +AAAA.all[1] + '年' + AAAA.all[2] + '天' + AAAA.all[3] + '小时' + AAAA.all[4] + '分钟' + AAAA.all[5] + '秒 ' + (AAAA.all[0] ? ' 前' : ' 后'));