为了账号安全,请及时绑定邮箱和手机立即绑定

在时间输入类型中插入 SubString

在时间输入类型中插入 SubString

慕斯709654 2023-06-15 10:31:24
我有一个时间计算器,它以下列格式返回时间的输入类型:hh/mm/ss目前显示如下:Let time = "03:00:00"当我执行计算函数时,它返回“3:0:0”并删除“0”。如何将其更改为 03:00:00?仅当 h/m/s 小于 10 时才必须添加“0”。如果需要,这是我的计算函数。该函数返回数组的时间总和:let testOne = ["02:00:00", "01:00:00", "01:00:00"]function test () {let calTotalHours = testOne.map(t => t.split(':')).reduce((arr,item,index)=>{    arr[0]+= parseFloat(item[0]);    arr[1]+= parseFloat(item[1]);    arr[2]+= parseFloat(item[2]);    if(arr[2]>=60) {        arr[1]++;        arr[2]%=60;    }    if(arr[1]>=60) {        arr[0]++;        arr[1]%=60;    }    return arr;},[0,0,0])    .join(':')    console.log(calTotalHours)}
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

您需要在 reduce 之后添加零,因为 reduce 仍在计算时间。

.map在计算后添加了一个以获取每个时间值,然后检查值是否小于 10:

.map((v) => (v < 10) ? v = "0" + v : v)

let testOne = ["02:00:00", "01:00:00", "01:00:00"]


function test() {

  let calTotalHours = testOne.map(t => t.split(':')).reduce((arr, item, index) => {


    arr[0] += parseFloat(item[0]);

    arr[1] += parseFloat(item[1]);

    arr[2] += parseFloat(item[2]);


    if (arr[2] >= 60) {

      arr[1]++;

      arr[2] %= 60;

    }

    if (arr[1] >= 60) {

      arr[0]++;

      arr[1] %= 60;

    }


    return arr;

  }, [0, 0, 0]).map((v) => (v < 10) ? v = "0" + v : v).join(':')

  console.log(calTotalHours)

}


test()


查看完整回答
反对 回复 2023-06-15
?
茅侃侃

TA贡献1842条经验 获得超21个赞

你可以做这样的事情来获得你想要的padStart()功能


let testOne = ["02:00:00", "01:00:00", "01:00:00"]


function test() {

  let calTotalHours = testOne.map(t => t.split(':')).reduce((arr, item, index) => {


      arr[0] += parseFloat(item[0]);

      arr[1] += parseFloat(item[1]);

      arr[2] += parseFloat(item[2]);


      if (arr[2] >= 60) {

        arr[1]++;

        arr[2] %= 60;

      }

      if (arr[1] >= 60) {

        arr[0]++;

        arr[1] %= 60;

      }



      return arr;

    }, [0, 0, 0])

    .map((num) => num.toString().padStart(2, 0)) //add 0 to each value here if they are less than 10

    .join(':');

  console.log(calTotalHours);


}

test();


查看完整回答
反对 回复 2023-06-15
?
富国沪深

TA贡献1790条经验 获得超9个赞

您可以在加入阵列之前尝试使用 .padStart() on:

.map(num => num.toString().padStart(2, '0'))

这将填充长度小于 2 的前导 0


查看完整回答
反对 回复 2023-06-15
  • 3 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信