简体   繁体   中英

How to calculate hours to minutes?

I am facing some problems where I want the time remaining to be shown as hours and minutes.

The issue now is that when calculating the time, it shows for example 1.97 hours. I want the time to be like 1.30 (1h30min).

I am also facing a problem where the time is reached, I want the remaining time to be calculated to the next open .

Below is the code I have done so far:

 var openTime = [{ open: -1, close: -1 }, { open: 8, close: 21 }, { open: 8, close: 21 }, { open: 8, close: 21 }, { open: 8, close: 21 }, { open: 8, close: 21 }, { open: 8, close: 17 }] var current = new Date(); var day = current.getDay(); var nextday = current.getDay()+1; var currentTime = current.getHours() + (current.getMinutes() / 60); var remainTime = 0; if (openTime[day].close - (currentTime).toFixed(2) >= 0) { remainTime = (openTime[day].close - currentTime).toFixed(2) console.log("close in %s hours", remainTime); document.getElementById("hours").innerHTML = "close in " + remainTime+ " hours" } else if (openTime[day].close - (currentTime).toFixed(2) <= 0) { remainTime = (currentTime).toFixed(2) + (openTime[nextday].open) document.getElementById("hours").innerHTML = "open in " + remainTime+ " hours" } 
 <div id="hours"></div> 

 function timeConvert(n) { var num = n; var hours = (num / 60); var rhours = Math.floor(hours); var minutes = (hours - rhours) * 60; var rminutes = Math.round(minutes); return num + " minutes = " + rhours + " hour(s) and " + rminutes + " minute(s)."; } console.log(timeConvert(200)); 

I think you can go with this.

Try like this. converted your open and close time to minutes and current time also to minutes and calculated the remaining time

 var openTime = [{ open: -1, close: -1 }, { open: 8, close: 21 }, { open: 8, close: 21 }, { open: 8, close: 10 }, { open: 8, close: 21 }, { open: 8, close: 21 }, { open: 8, close: 17 }] var current = new Date(); var day = current.getDay(); var nextday = current.getDay()+1; var currentTime = currentTime = (current.getHours() * 60) + current.getMinutes(); var remainTime = 0; var closeTime = (openTime[day].close *60); var openTime = (openTime[day].open *60); if (closeTime - currentTime >= 0) { remainTime = closeTime - currentTime; console.log("close in %s minutes", remainTime); var hours = Math.floor(remainTime/60); if(hours == 0){ document.getElementById("hours").innerHTML = "close in " + Math.floor(remainTime%60) + " Mins"; } else { document.getElementById("hours").innerHTML = "close in " + hours+ " hours " + Math.floor(remainTime%60) + " Mins"; } } else if (closeTime - currentTime <= 0) { remainTime = currentTime + openTime; document.getElementById("hours").innerHTML = "open in " + Math.floor(remainTime/60)+ " hours" + Math.floor(remainTime%60) + " Mins"; } 
 <div id="hours"></div> 

please adjust closing time in closing function parameter to test. Hope it helps.

FIDDLE

 function closing(closing_time) { let current_datetime = new Date(); let formatted_date = current_datetime.getFullYear() + "-" + (current_datetime.getMonth() + 1) + "-" + current_datetime.getDate() var closing = new Date(formatted_date + " "+closing_time); // get total seconds between the times var delta = Math.abs(current_datetime - closing) / 1000; // calculate (and subtract) whole hours var hours = Math.floor(delta / 3600) % 24; delta -= hours * 3600; // calculate (and subtract) whole minutes var minutes = Math.floor(delta / 60) % 60; delta -= minutes * 60; //alert(minutes); alert("Remaining time to go home : " + hours + "hours " + minutes + "minutes"); } closing("06:30 PM"); 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM