Hogyan frissíteni egy oldal egy bizonyos hónapban. JS

szavazat
2

Van egy funkció, amely felfrissíti az oldalamon egy adott napon és időpontban, de hogyan tudok frissíteni csak egy adott hónap és nap egy bizonyos ideig? Az ok, amiért szeretnék, hogy ezt is, mert a honlap frissítéseket keres a futball átutalások csak akkor kerül sor a konkrét hónap.

Itt van a funkció, hogy frissítse bizonyos ideig egy nap

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);
    }
}
A kérdést 30/01/2014 17:00
felhasználó
Más nyelveken...                            


1 válasz

szavazat
2

Már kitakarította a kód egy kicsit, és hozzá egy sort, ami szintén meg lehet adni a konkrét dátum és hónap:

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);
    }
}

Remélem, hogy a megjegyzések világossá tenni, milyen módosításokat tettem. Ha valami még nem világos, kérem, hagyjon egy megjegyzést, hogy ez a válasz.

A vonal month!=undefined ? month : now.getUTCMonth(),az alábbiakat teszi:

Ha a hónap nem definiált, akkor töltse ki a hó, és ha nincs kitöltve, akkor használja az aktuális hónapban. Ez azt jelenti, hogy a következő szintaxist is működik:

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

Date a paraméterként

Azt is, hogy ez egy kicsit könnyebb mindössze ellátó Dateobjektumot paraméterként, hanem minden egyes változó. Ez lenne a következőképpen néz ki:

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);
    }
}

Ezt fel lehet hívni keresztül

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

Ez beállítja a frissítési időzítőt január 30, 2014, 23:59:59 UTC-kor.

Válaszolt 30/01/2014 17:26
a forrás felhasználó

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