कैसे एक निश्चित महीने में एक पृष्ठ को ताज़ा करने। जे एस

वोट
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 यूटीसी के लिए एक ताज़ा टाइमर सेट।

30/01/2014 को 17:26
का स्रोत उपयोगकर्ता

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