In php il tempo è calcolato per mezzo del famoso Unix Epoch (il numero di secondi trascorsi dal giorno di nascita di Unix (convenzionalmente dal dal 1 gennaio 1970)
Esistono varie funzioni in php per gestire l’ora con questo metodo e convertirla in un formato a cui siamo un po’ più abituati.
La funzione date() permette di formattare un dato valore intero timestamp, basandosi su alcuni particolari caratteri..
carattere
significato
d
giorno del mese numerico 01-31
D
giorno della settimana in abbreviazione di 3 caratteri
m
mese numerico 01-12
M
mese in abbreviazione di 3 caratteri
F
mese in parola
Y
anno a quattro cifre
y
anno a due cifre
H
ore 00-24
h
ore 00-12
i
minuti
s
secondi
Vediamo come usare date() per la rappresentazione “d-m-Y ” ovvero giorno-mese-anno, in base a quanto riportato nella precedente tabella:
echo date (“d-m-Y “, time());
time() restituissce la data (ed ora) attuale in unix epoch format.
Date mi consente di convertirla in formato d-m-Y (altri formati sono sperimentabili grazie alla tabella).
In caso disponessimo gia di parametri come mese, anno, giorno, ora, etc… sarebbe comodo poter tornare indietro a conoscere lo Unix Epoch.
A far ciò ci pensa mktime
mktime(12,40,7,1,2,2009);
restituirà l’intero Unix Epoch delle 12:40 e 7 secondi del 2 – 1 – 2009
Se lavoriamo in php, mktime è integrato del linguaggio vero e proprio.
Interessane è vedere come possiamo facilmente ottenere una funzione analoga in JavaScript:
function mktime () {
// Get UNIX timestamp for a date
//
// version: 909.322
// discuss at: http://phpjs.org/functions/mktime // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: baris ozdil
// + input by: gabriel paderni
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: FGFEmperor // + input by: Yannoo
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + input by: jakes
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + bugfixed by: Marc Palau // + improved by: Brett Zamir (http://brett-zamir.me)
// + input by: 3D-GRAF
// + bugfixed by: Brett Zamir (http://brett-zamir.me)
// * example 1: mktime(14, 10, 2, 2, 1, 2008);
// * returns 1: 1201871402 // * example 2: mktime(0, 0, 0, 0, 1, 2008);
// * returns 2: 1196463600
// * example 3: make = mktime();
// * example 3: td = new Date();
// * example 3: real = Math.floor(td.getTime()/1000); // * example 3: diff = (real - make);
// * results 3: diff < 5
// * example 4: mktime(0, 0, 0, 13, 1, 1997)
// * returns 4: 883609200
// * example 5: mktime(0, 0, 0, 1, 1, 1998) // * returns 5: 883609200
// * example 6: mktime(0, 0, 0, 1, 1, 98)
// * returns 6: 883609200
var no=0, i = 0, ma=0, mb=0, d = new Date(), dn = new Date(), argv = arguments, argc = argv.length;
var dateManip = {
0: function (tt){ return d.setHours(tt); },
1: function (tt){ return d.setMinutes(tt); },
2: function (tt){ var set = d.setSeconds(tt); mb = d.getDate() - dn.getDate(); d.setDate(1); return set;},
3: function (tt){ var set = d.setMonth(parseInt(tt, 10)-1); ma = d.getFullYear() - dn.getFullYear(); return set;}, 4: function (tt){ return d.setDate(tt+mb);},
5: function (tt){
if (tt >= 0 && tt <= 69) {
tt += 2000;
} else if (tt >= 70 && tt <= 100) {
tt += 1900;
}
return d.setFullYear(tt+ma);
} // 7th argument (for DST) is deprecated
};
for (i = 0; i < argc; i++){
no = parseInt(argv[i]*1, 10); if (isNaN(no)) {
return false;
} else {
// arg is number, let's manipulate date object
if (!dateManip[i](no)){ // failed
return false;
}
}
} for (i = argc; i < 6; i++) {
switch (i) {
case 0:
no = dn.getHours();
break; case 1:
no = dn.getMinutes();
break;
case 2:
no = dn.getSeconds(); break;
case 3:
no = dn.getMonth()+1;
break;
case 4: no = dn.getDate();
break;
case 5:
no = dn.getFullYear();
break; }
dateManip[i](no);
}
return Math.floor(d.getTime()/1000);
}
Non è altro che la trasposizione JavaScript di una funzione gia esistente per altri linguaggi.
Il programmatore esperto non avrà alcuna difficoltà ad integrare questa funzione in una libreria js da associare al proprio lavoro WEB.
Buon lavoro
Share on Facebook