请帮我倒计时这件小事

HeIp me for litle thing Countdown

本文关键字:倒计时      更新时间:2023-10-01

我不懂javascript。如何在那个html/javascript中为数据日期添加分钟?

示例:

数据日期为3,19-->周三晚上7点。我想定在3点19分30秒-->周三下午7点半(7:30)。

function getRemaining(EVENTDAY, EVENTHOUR, now) {
    now = new Date();
    var dow = now.getDay();
    var hour = now.getHours() + now.getMinutes() / 60 + now.getSeconds() / 3600;
    var offset = EVENTDAY - dow;
    if (offset < 0 || (offset === 0 && EVENTHOUR < hour)) {
        offset += 7;
    }
    var eventDate = now.getDate() + offset;
    var eventTime = new Date(now.getFullYear(), now.getMonth(), eventDate,
    EVENTHOUR, 0, 0);
    var millis = eventTime.getTime() - now.getTime();
    var seconds = Math.round(millis / 1000);
    var minutes = Math.floor(seconds / 60);
    seconds %= 60;
    var hours = Math.floor(minutes / 60);
    minutes %= 60;
    var days = Math.floor(hours / 24);
    hours %= 24;
    if (seconds < 10) seconds = "0" + seconds;
    if (minutes < 10) minutes = "0" + minutes;
    if (hours < 10) hours = "0" + hours;
    return days + "d " + hours + "h " + minutes + "m	";
}
function tick() {
    $.each($('.countdown'), function (i, v) {
        startdate = $(this).attr('datadate');
        startdate = startdate.split(',');
        $(this).html(getRemaining(startdate[0], startdate[1]));
    });
}
setInterval(tick, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="countdown" datadate='6,19'></span>
<br>
<span class="countdown" datadate='2,19'></span>
<br>
<span class="countdown" datadate='3,19'></span>
<br>
<span class="countdown" datadate='3,20'></span>
<br>

希望你能帮助我

IIIIIIIIIIIIIII

首先,函数getRemaining(EVENTDAY, EVENTHOUR, now)的最后一个参数始终是null(或undefined)。我删除了参数并创建了一个函数范围的变量。

我还对代码进行了一些可视化更改。给你,这应该有效:

function getRemaining(EVENTDAY, EVENTHOUR, EVENTMINUTE) {
    var now = new Date();
    var offset = EVENTDAY - now.getDay();
    var hour = now.getHours() + now.getMinutes() / 60 + now.getSeconds() / 3600;
    
    if (offset < 0 || (offset === 0 && EVENTHOUR < hour)) {
        offset += 7;
    }
    var eventDate = now.getDate() + offset;
    var eventTime = new Date(now.getFullYear(), now.getMonth(), eventDate, EVENTHOUR, EVENTMINUTE, 0);
    var millis = eventTime.getTime() - now.getTime();
    var seconds = Math.round(millis / 1000);
    var minutes = Math.floor(seconds / 60);
    var hours = Math.floor(minutes / 60);
    var days = Math.floor(hours / 24);
    seconds %= 60;
    minutes %= 60;
    hours %= 24;
    if (seconds < 10) seconds = "0" + seconds;
    if (minutes < 10) minutes = "0" + minutes;
    if (hours < 10) hours = "0" + hours;
    return days + "d " + hours + "h " + minutes + "m	";
}
function tick() {
    $.each($('.countdown'), function (i, v) {
        startdate = $(this).attr('datadate');
        startdate = startdate.split(',');
        $(this).html(getRemaining(startdate[0], startdate[1], startdate[2]));
    });
}
setInterval(tick, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="countdown" datadate='6,5,8'></span>
<span class="countdown" datadate='3,10,30'></span>

您可以使用类似moment.js 的库

然后:

moment().format('MMMM Do YYYY, h:mm:ss a'); // February 12th 2015, 6:05:32 pm