Πώς να ανανεώσετε την σελίδα σε ένα συγκεκριμένο μήνα. JS

ψήφοι
2

Έχω μια λειτουργία που ανανεώνει τη σελίδα μου μια συγκεκριμένη ώρα και μέρα, αλλά πώς μπορώ να ανανεώσετε μόνο σε ένα συγκεκριμένο μήνα και την ημερομηνία σε ένα ορισμένο χρονικό διάστημα; Ο λόγος για τον οποίο θέλω να κάνω αυτό οφείλεται στο γεγονός ιστοσελίδα έλεγχοι μου για ενημερώσεις σχετικά με τις μεταφορές ποδοσφαίρου που λαμβάνει χώρα μόνο σε συγκεκριμένες μήνες.

Εδώ είναι η λειτουργία μου για να ανανεώσετε ορισμένο χρονικό διάστημα σε μια μέρα

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);
    }
}
Δημοσιεύθηκε 30/01/2014 στις 17:00
χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
2

Έχω καθαριστεί κωδικό σας λίγο, και να προστεθούν σε μια γραμμή που θα σας αφήσει να ορίσετε μια συγκεκριμένη ημερομηνία και το μήνα:

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

Ελπίζω ότι οι παρατηρήσεις καθιστούν σαφές ποιες τροποποιήσεις που έκανα. Αν μη τι άλλο είναι ακόμα ασαφής, παρακαλώ αφήστε ένα σχόλιο σε αυτήν την απάντηση.

Η γραμμή του month!=undefined ? month : now.getUTCMonth(),κάνει τα εξής:

Αν ο μήνας δεν είναι απροσδιόριστη, στη συνέχεια συμπληρώστε το μήνα, και αν δεν έχει συμπληρωθεί, στη συνέχεια, χρησιμοποιήστε τον τρέχοντα μήνα. Αυτό σημαίνει ότι χρησιμοποιώντας την ακόλουθη σύνταξη θα εξακολουθούν να λειτουργούν:

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

Date ως παράμετρος

Μπορείτε επίσης να κάνετε αυτό είναι λίγο πιο εύκολο από την απλή παροχή ενός Dateαντικειμένου ως παράμετρο, αντί για κάθε μεταβλητή. Αυτό θα είναι κάπως έτσι:

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

Αυτό μπορεί στη συνέχεια να κληθεί μέσω

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

Αυτό θέτει ένα χρονόμετρο ανανέωσης για 30, Ιανουαρίου, 2014, 23:59:59 UTC.

Απαντήθηκε 30/01/2014 στις 17:26
πηγή χρήστη

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