HeLp我的小事倒计时

时间:2015-02-12 18:00:26

标签: javascript html

我不知道javascript。如何在html / javascript中添加分钟到datadate?

示例:

Datadate是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>

希望你能帮助我。

IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

2 个答案:

答案 0 :(得分:0)

您可以使用moment.js

等库

然后:

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

答案 1 :(得分:0)

首先,函数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>