Обратный отсчет в Javascript - PullRequest
       42

Обратный отсчет в Javascript

1 голос
/ 28 февраля 2011

Я хотел бы указать на странице интрасети нашей компании количество дней до следующего дня выплаты, однако - даты выплаты не каждые 4 недели и т. Д. Они будут похожи на это:* Возможно ли иметь часы обратного отсчета javascript с указанными выше датами, поэтому, если одна дата прошла, она начнет обратный отсчет до следующей календарной даты?обратный отсчет до определенной даты, но ни один, который начинает обратный отсчет до второй даты после того, как первая прошла.

Спасибо, Дэн

Ответы [ 2 ]

2 голосов
/ 28 февраля 2011

Поместите даты в массив.Будьте осторожны, в Javascript месяцы начинаются с нуля, поэтому колеблются от 0 до 11. Итерируйте массив, и когда дата больше, чем сегодня, отобразите дни между:

    var calcPayDate = function () {
        var payDates = [];
        payDates.push(new Date(2011, 0, 1));
        payDates.push(new Date(2011, 1, 15));
        payDates.push(new Date(2011, 2, 12));
        payDates.push(new Date(2011, 3, 20));

        var today = new Date();
        for (var i = 0; i < payDates.length; i++) {
            if (payDates[i] > today) {
                document.getElementById('countdownDiv').innerHTML = calcDays(payDates[i], today);
                break;
            }
        }
    }

    var calcDays = function(date1, date2) {

        // The number of milliseconds in one day
        var ONE_DAY = 1000 * 60 * 60 * 24

        // Convert both dates to milliseconds
        var date1_ms = date1.getTime()
        var date2_ms = date2.getTime()

        // Calculate the difference in milliseconds
        var difference_ms = Math.abs(date1_ms - date2_ms)

        // Convert back to days and return
        return Math.round(difference_ms / ONE_DAY)

    }

Функция calcDays - это функциянайдено на этом сайте

Дни помещаются в div, который называется 'countdownDiv'.

0 голосов
/ 28 февраля 2011

Поищите в Интернете «учебник по JavaScript».

А пока вот код, который поможет вам начать:

var dates = [
    new Date(2011, 0,  1),  // note that format is year, month-1, day
    new Date(2011, 1, 15),  // don't ask me why
    new Date(2011, 2, 12),
    new Date(2011, 3, 20)
];

var now = new Date();

for (var i in dates) {  // this is a foreach loop
    if (now < dates[i]) {
        document.write(Math.ceil((dates[i] - now) / 86400000));
        break;
    }
}
...