0

I need to make a timer that counts down to 4:30pm. So far, I can get it to either 4pm or 5pm, but not any minutes in between. I've managed to figure this much out:

<script type="text/javascript">

var currentTime = new Date();
var hours = currentTime.getHours();
var minutes = currentTime.getMinutes();
var d = new Date();
var weekday = new Array(7);
weekday[0] = "Sunday";
weekday[1] = "Monday";
weekday[2] = "Tuesday";
weekday[3] = "Wednesday";
weekday[4] = "Thursday";
weekday[5] = "Friday";
weekday[6] = "Saturday";

var n = weekday[d.getDay()];

var suffix = "AM";

var hoursLeft = 16 - hours;
var minsLeft = 60 - minutes;

if (minutes < 10){ 
minutes = "0" + minutes;
 }

if (hours >= 18)
{
 document.write("Same day shipping has ended for today.");
} else

if ((n === "Saturday") || (n === "Sunday"))
{
document.write("Same day shipping is not available today.");
} else {

if (hoursLeft === 0) {
    document.write(minsLeft + " minutes left to have your order shipped today!");
} else {
    if (hoursLeft === 1) {
        document.write(hoursLeft + " hour and " + minsLeft + " minutes left to have your order shipped today!");
    } else {
    if ((hoursLeft === 0) && (minsLeft <= 30)){
    document.write(minsLeft + " minute left to have your order shipped today!");
    } else {

    if (minsLeft ===1) {
    document.write (hoursLeft + " hours and " + minsLeft + " minute left to have your order shipped today!");
    } else {


if(minsLeft===60){
minsLeft=0;
hoursLeft++;
n === "Monday";
n === "Tuesday";
n === "Wednesday";
n === "Thursday";
n === "Friday";
}

document.write(hoursLeft  + " hours and " + minsLeft + " minutes left to have your order shipped today!");
}
}
}
}
}

</script>

I need the time to count down to 4:30pm, but I've only figured out how to change the "var hoursLeft" to set it to "16 - hours" which gets me to 4pm, but can't figure out how to get it to 4:30pm. I thought I'd tweak the "var minsLeft" but got a weird bug that started to say stuff like "2 hours and -15 minutes left".

Anyone have any ideas?

4

1 回答 1

1

正如上述评论者所建议的那样,在几分钟内完成您的计算。将您的小时数转换为总分钟数,并确保分钟数在您的参数范围内。

要显示分钟,只需使用模运算符即可获取当前小时之上的分钟数。

例如,如果还剩 185 分钟,您想显示“还剩 3 小时 5 分钟”,

var minutesLeft = 185;
var hours = Math.floor(minutesLeft/60);
var minStr = minutesLeft % 60;
var timeLeft = hours + " hours and " + minStr + " minutes left";

当然,您需要使用自己的逻辑来避免说出“1 小时”之类的话。

于 2013-04-15T19:43:11.737 回答