Ne ho trovato uno appartenente a questo forum, che qualche volta mettono quando il forum è in manutenzione Perchè non vederlo e trarne spunto?
il codice è:
file countdown.js
codice:
function CD_T(id, e) {
var n = new Date();
CD_D(+n, id, e);
setTimeout("CD_T('" + id + "', " + e + ")", 1100-n.getMilliseconds());
};
function CD_D(n, id, e) {
var ms = e - n;
if (ms <= 0) ms *= -1;
var d = Math.floor(ms/864E5);
ms -= d*864E5;
var h = Math.floor(ms/36E5);
ms -= h*36E5;
var m = Math.floor(ms/6E4);
ms -= m*6E4;
var s = Math.floor(ms/1E3);
CD_OBJS[id].innerHTML = d + " giorni, " + (d == 1 ? "" : "") + CD_ZP(h) + " ore, " + CD_ZP(m) + " minuti, " + CD_ZP(s) + " secondi";
};
function CD_ZP(i) {
return (i<10 ? "0" + i : i);
};
// Initialisation
function CD_Init() {
var pref = "countdown";
var objH = 1;
if (document.getElementById || document.all) {
for (var i=1; objH; ++i) {
var id = pref + i;
objH = document.getElementById ? document.getElementById(id) : document.all[id];
if (objH && (typeof objH.innerHTML) != 'undefined') {
var s = objH.innerHTML;
var dt = CD_Parse(s);
if (!isNaN(dt)) {
CD_OBJS[id] = objH;
CD_T(id, dt.valueOf());
if (objH.style) {
objH.style.visibility = "visible";
}
}
else {
objH.innerHTML = s + "x";
}
}
}
}
};
function CD_Parse(strDate) {
var objReDte = /(\d{4})\-(\d{1,2})\-(\d{1,2})\s+(\d{1,2}):(\d{1,2}):(\d{0,2})\s+GMT([+\-])(\d{1,2}):?(\d{1,2})?/;
if (strDate.match(objReDte)) {
var d = new Date(0);
d.setUTCFullYear(+RegExp.$1,+RegExp.$2-1,+RegExp.$3); // Set YYYY-MM-DD directly as UTC
d.setUTCHours(+RegExp.$4,+RegExp.$5,+RegExp.$6); // Set HH:MM:SS directly as UTC
// If there is a timezone offset specified then we need to compensate for the offset from UTC
var tzs = (RegExp.$7 == "-" ? -1 : 1); // Timezone sign
var tzh = +RegExp.$8; // Get requested timezone offset HH (offset ahead of UTC - may be negative)
var tzm = +RegExp.$9; // Get requested timezone offset MM (offset ahead of UTC - always positive)
if (tzh) {
d.setUTCHours(d.getUTCHours() - tzh*tzs); // Compensate for timezone HH offset from UTC
}
if (tzm) {
d.setUTCMinutes(d.getUTCMinutes() - tzm*tzs); // Compensate for timezone MM offset, depending on whether the requested MM offset is ahead or behind of UTC
}
return d; // Date now correctly parsed into a Date object correctly offset from UTC internally regardless of users current timezone.
}
else {
return NaN; // Didn't match required date format
};
};
var CD_OBJS = new Object();
// Try not to commandeer the default onload handler if possible
if (window.attachEvent) {
window.attachEvent('onload', CD_Init);
}
else if (window.addEventListener) {
window.addEventListener("load", CD_Init, false);
}
else {
window.onload = CD_Init;
}
richiamarlo è semplice: basta mettere uno o più div chiamati countdown1, countdown2, ..., countdownn, con dentro la data di partenza, come da esempio:
<div id="countdown1">2016-04-18 18:44:00 GMT+02:00</div>
<div id="countdown2">2007-04-25 20:44:00 GMT+02:00</div>