Nasıl belli ayda bir sayfayı yenilemeniz. JS

oy
2

Belirli bir saat ve günde sayfamı yeniler bir işlevi var ama belirli bir zamanda belirli bir ay ve tarihte sadece yenileyebilirsiniz nasıl? Ben bunu yapmak istiyorum nedeni budur yalnızca belirli aylarda gerçekleşir futbol transferleri ilgili güncellemeler için Web sitem kontrolleri çünkü.

Burada bir günde belli bir zaman yenilemek için benim fonksiyondur

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);
    }
}
Oluştur 30/01/2014 saat 17:00
kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
2

Ben kodunuzu biraz temizlemiş, hem de belirli bir tarih ve ay ayarlamak izin verecek bir çizgide ekledik:

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

Ben görüşlere ben yapılan net Ne değişiklik yapma umuyoruz. şey henüz belli değil ise, bu cevaba bir yorum bırakın lütfen.

Hattı month!=undefined ? month : now.getUTCMonth(),şunları yapar:

Ay ise değil tanımsız, ardından aylık doldurun ve onu doldurulur değilse, o zaman bulunduğunuz ayı kullanın. Bu, aşağıdaki sözdizimini kullanarak çalışmaya devam anlamına gelir:

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

Date parametre olarak

Ayrıca, sadece bir sağlayarak bu biraz kolaylaştırabilir Dateyerine tek tek her değişkenin, bir parametre olarak nesneyi. Yani böyle bir şey görünecektir:

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

Bu daha sonra üzerinden çağrılabilir

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

Bu 30 Ocak 2014, 23:59:59 UTC için bir yenileme zamanlayıcı ayarlar.

Cevap 30/01/2014 saat 17:26
kaynak kullanıcı

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