1

我想在我们公司的 Intranet 页面上显示下一个发薪日之前的天数,但是 - 发薪日日期不是每 4 周一次等。它们将与此类似:

1st January 2011
15th February 2011
12th March 2011
20th April 2011
...

是否有可能有一个列出上述日期的javascript倒计时时钟,所以一旦一个日期过去,它就会开始倒计时,直到下一个日历日期?

我可以找到大量倒计时到特定日期的脚本示例,但没有一个脚本会在第一个日期过去后开始倒计时到第二个日期。

谢谢,丹

4

2 回答 2

2

将日期放入数组中。请注意,在 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 函数是站点上的一个函数

这些天被放在一个名为“countdownDiv”的 div 中。

于 2011-02-28T11:47:05.500 回答
0

在网上搜索“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;
    }
}
于 2011-02-28T11:44:49.167 回答