当前位置: 代码迷 >> JavaScript >> JavaScript倒数至日期
  详细解决方案

JavaScript倒数至日期

热度:107   发布时间:2023-06-13 12:18:03.0

因此,我正在尝试构建一个非常简约的倒数计时器,直到特定日期(2015年7月31日,格林尼治标准时间18:00:00)为止,包括直到该日期为止的总MS,以及一个D:H:M:S:MS,直到该日期为止。日期。

到目前为止,我得到的是该Codepen: ://codepen.io/svbeon/pen/MwBJNJ使用此JS:

setInterval(times, 1);
function times() {
today = new Date();
July = new Date(Date.UTC(2015,06,31,18,0,0,0));
diffMs = ((July - today) - today.getTimezoneOffset() * 60000); // milliseconds between now & July 31 
diffDays = (July.getDate() - today.getDate()); // days
diffHrs = (24 + ((July.getHours() - today.getHours()) + (today.getTimezoneOffset() / 60))); // hours
diffMins = (60 + (July.getMinutes() - today.getMinutes())); // minutes
diffSecs = (60 + (July.getSeconds() - today.getSeconds())); // seconds
diffMis = (1000 + (July.getMilliseconds() - today.getMilliseconds())); //milliseconds


if (diffMs <= 0) {
    diffMs = 0;
    diffDays = 0;
    diffHrs = 0;
    diffMins = 0;
    diffSecs = 0;
    diffMis = 0;
    }

document.getElementById("timer").innerHTML = diffMs + " miliseconds";
document.getElementById("timer2").innerHTML = diffDays + " days " + diffHrs + " Hours " + diffMins + " Minutes " + diffSecs + " seconds " + diffMis + " milliseconds";
document.getElementById("date").innerHTML = "until " + July;
}

我来到这里的问题是,它可以重复类似14 days 24 hours 60 minutes 60 seconds 1000 milliseconds时,它实际上应该是14 days 0 hours 0 minutes 0 seconds 0 milliseconds以及18:00后UTC还在说14 days而不是直到午夜的13 days

我对如何简单地解决这些问题一无所知,例如,少添加一个:

diffSecs = (59 + (July.getSeconds() - today.getSeconds())); // seconds

将导致计时器显示0而不是60,但也会使计时器错误1秒(如果您使用计时器,则为分钟或小时)

因此,如果您碰巧知道如何解决此问题并帮助不那么熟练的开发人员,我将非常高兴!

我建议使用 ,因为它使日期/时间的操作更加简单,并且可能还会帮助您解决此问题。

例如,要获取两个日期之间的差(以毫秒为单位):

var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
a.diff(b) // 86400000

然后根据毫秒数的差异结果创建一个duration ,并使用milliseconds()seconds()等函数以不同单位显示duration

moment.duration(1500).milliseconds(); // 500
moment.duration(1500).seconds(); // 1

部分解决方案: :

只需使用mod:

day = day%24; secs = secs%60;

等等。

  相关解决方案