I have an time calculator which returns an input type of time in the following format: hh/mm/ss
It currently displays like this:
Let time = "03:00:00"
When I do a calculate function it return “3:0:0” instead and removes the “0”.
How can I change this to be 03:00:00? The “0” must only be added if the h/m/s is less then 10.
Here are my calculate function if needed. The function returns the sum of time fron an array:
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) }
Advertisement
Answer
You need to add the zeros after the reduce, since reduce is still calculating the time.
I added a .map
after the calculation to get each value of time and then check if value is less than 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()