Wie eine Seite in einem bestimmten Monat zu aktualisieren. JS

stimmen
2

Ich habe eine Funktion, die meine Seite zu einem bestimmten Zeitpunkt und Tag erfrischt aber wie kann ich aktualisiere nur auf einem bestimmten Monat und das Datum zu einem bestimmten Zeitpunkt? Der Grund, warum ich dies tun wollen, weil meine Website prüft, ob Aktualisierungen in Fußballübertragungen, die stattfindet nur auf bestimmte Monate.

Hier ist meine Funktion bestimmte Zeit an einem Tag zu aktualisieren

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);
    }
}
Veröffentlicht am 30/01/2014 um 17:00
vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
2

Ich habe Ihren Code ein bisschen aufgeräumt, und fügte hinzu, in einer Linie, die auch lassen würden Sie ein bestimmtes Datum und Monat festgelegt:

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

Ich hoffe, die Kommentare klar, welche Änderungen vornehmen ich gemacht. Wenn irgendetwas noch unklar ist, bitte einen Kommentar zu dieser Antwort hinterlassen.

Die Linie der month!=undefined ? month : now.getUTCMonth(),macht folgendes:

Wenn der Monat nicht undefiniert, füllt dann im Monat, und wenn es in nicht gefüllt ist, dann den aktuellen Monat verwenden. Dies bedeutet , dass die folgende Syntax verwenden würde immer noch funktionieren:

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

Date als Parameter

Sie können auch nur durch Zufuhr eines dies ein wenig leichter machen Dateals ein Parameter - Objekt, statt jede einzelne Variable. Das wäre in etwa so aussehen:

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

Dies kann dann über aufgerufen werden

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

Dies setzt einen Auffrischzeitgeberereignis für 30. Januar 2014, 23.59.59 UTC.

Beantwortet am 30/01/2014 um 17:26
quelle vom benutzer

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