Jak obnovit stránku v určitém měsíci. JS

hlasů
2

Mám funkci, která osvěží svou stránku v určitém čase a den, ale jak mohu aktualizovat pouze na konkrétní měsíc a datum v určitý čas? Důvod, proč chci, aby to je proto, že mé webové stránky vyhledává aktualizace na fotbalové přenosy, který probíhá pouze na konkrétních měsících.

Tady je moje funkce obnovit určitou dobu v jednom dni

function refreshAt(hours, minutes, seconds, day) {
    var now = new Date();
    var then = new Date();
    var dayUTC = new Date();

    if(dayUTC.getUTCDay() == day) {

        if(now.getUTCHours() > hours ||
        (now.getUTCHours() == hours && now.getUTCMinutes() > minutes) ||
        now.getUTCHours() == hours && now.getUTCMinutes() == minutes && now.getUTCSeconds() >= seconds) {
            then.setUTCDate(now.getUTCDate() + 1);
        }

        then.setUTCHours(hours);
        then.setUTCMinutes(minutes);
        then.setUTCSeconds(seconds);


        var timeout = (then.getTime() - now.getTime());
        setTimeout(function() { window.location.reload(true); }, timeout);
    }
}
Položena 30/01/2014 v 17:00
uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
2

Jsem uklidila svůj kód trochu, a přidal se v linii, která by také vám umožní nastavit určitý den a měsíc:

function refreshAt(hours, minutes, seconds, day, month) { // added month argument
    var now = new Date();
    var then = new Date( // used format: new Date(Y, M, D, h, m, s);
        now.getUTCFullYear(),
        month!=undefined ? month : now.getUTCMonth(),
        day,
        hours,
        minutes,
        seconds
    ); // fill in the date when defining the variable

    // You don't need a seperate Date object to get the UTC date

    if (now.getUTCDate() == day && (month == undefined || now.getUTCMonth() == month)) {
        if(now.getTime() > then.getTime()) {
            then.setUTCDate(now.getUTCDate() + 1);
        }

        // exit function if the new time is still after the current time
        if (now.getTime() > then.getTime()) return;

        // you don't need brackets around this
        var timeout = then.getTime() - now.getTime();
        setTimeout(function() { window.location.reload(true); }, timeout);
    }
}

Doufám, že komentáře aby bylo jasné, jaké změny jsem udělal. Kdyby nic jiného, ​​je stále nejasné, prosím zanechat komentář k této odpovědi.

Řada month!=undefined ? month : now.getUTCMonth(),provádí následující:

Je-li Měsíc není definována, pak vyplnit v měsíci, a pokud není vyplněno, pak použijte aktuální měsíc. To znamená, že pomocí následující syntaxe by ještě fungovat:

refreshAt(23, 59, 59, 30); //refreshes at 23:59:59 UTC today (30 Jan 2014)

Date jako parametr

Můžete také, aby to trochu jednodušší, stačí dodávat Dateobjekt jako parametr namísto jednotlivé proměnné. To by vypadat nějak takto:

function refreshAt(date) { // added month argument
    var now = new Date();

    if (now.getUTCDate() == date.getUTCDate()) {
        var timeout = date.getTime() - now.getTime();
        if (timeout > 0)
            setTimeout(function() { window.location.reload(true); }, timeout);
    }
}

To pak může být vyvolána prostřednictvím

refreshAt(new Date(2014, 0, 30, 23, 59, 59));

To nastaví obnovovací časovač pro 30. Jan 2014, 23:59:59 UTC.

Odpovězeno 30/01/2014 v 17:26
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more