首页 小组 问答 话题 好文 素材 用户 唠叨 我的社区

[教程]将秒数转换成对人类友好的格式数组

九秘Lv.1种子选手
2024-09-10 17:08:23
0
43

需求

给你一个xxxxxx秒的数值,你想办法把它转换成xx年xx小时xx分xx秒这种格式对人类友好、可读的文字。

思路

先定义好转换规则,比如1年是多少秒,1天是多少秒,1小时是多少秒等等。

然后把每一个规则放到数组中,大的时间单位放在前边,越小的时间单位越往后放,这样做的目的是:使用的时候,先从大的时间单位开始转换(做除法运算)转换完剩下的不够1个时间单位的秒数(即余数),给下个稍小的时间单位,让它再做转换操作,然后再把转换完剩下的不够1个时间单位的秒数,给下一个更小的时间单位去操作,如此反复,直到最小的时间单位,那就是秒了。

这种迭代操作用数组的reduce()方法很合适,它就是从头到尾对每个数组元素先做一些操作,然后把某些数据给下一次操作使用。

代码

代码如下:

// 将秒数转换成对人类友好的格式数组
function friendlyTime(seconds) {
  // 转化规则
  const RU*** = [{
    title: '年',
    multiple: 365 * 24 * 60 * 60
  }, {title: '天',
    multiple: 24 * 60 * 60
  }, {
    title: '小时',
    multiple: 60 * 60,
  }, {
    title: '分',
    multiple: 60,
  }, {
    title: '秒',
    multiple: 1
  }]
  let friendlyArr = []
  
  RU***.reduce((pre, current) => {
    // 商取整数
    const quotient = Math.floor(pre / current.multiple)
    
    // 商大于0,才算是有意义的时间,将其和其对应的时间单位一并放入数组中
    if (quotient > 0) {
      friendlyArr.push(`${quotient}${current.title}`)
    }
    
    // 返回余数,给下次计算用
    return pre % current.multiple
  }, seconds)
  
  return friendlyArr
}
九秘
九秘

42 天前

签名 : 我常驻在>https://www.huaqu.club/ask   43       0
评论
站长交流