Convert seconds to days, hours, minutes and seconds

前端 未结 8 1434
陌清茗
陌清茗 2020-12-03 16:45

I have a Javascript timing event with an infinite loop with a stop button.

It will display numbers when start button is click.Now I want this numbers converted to so

8条回答
  •  伪装坚强ぢ
    2020-12-03 17:17

    My solution with map() and reduce():

    const intervalToLevels = (interval, levels) => {
      const cbFun = (d, c) => {
        let bb = d[1] % c[0],
          aa = (d[1] - bb) / c[0];
        aa = aa > 0 ? aa + c[1] : '';
    
        return [d[0] + aa, bb];
      };
    
      let rslt = levels.scale.map((d, i, a) => a.slice(i).reduce((d, c) => d * c))
        .map((d, i) => ([d, levels.units[i]]))
        .reduce(cbFun, ['', interval]);
      return rslt[0];
    };
    
    const TimeLevels = {
      scale: [24, 60, 60, 1],
      units: ['d ', 'h ', 'm ', 's ']
    };
    const secondsToString = interval => intervalToLevels(interval, TimeLevels);

    If you call secondsToString(123456), you can get "1d 10h 17m 36s "

提交回复
热议问题