- Home
- Categorie
- Coding e Sistemistica
- PHP
- Date di nascita
-
dalla pagina di "date" nella guida php
**Nota: ** Il valido intervallo del timestamp è abitualmente da Fri, 13 Dec 1901 20:45:54 GMT a Tue, 19 Jan 2038 03:14:07 GMT. (Queste date corrispondono al valore minimo e al massimo per un intero segnato a 32-bit.)
-
Ti ringrazio della risposta.
Il problema è che con le date in formato unix se utilizzo una data anteriore al 1970 da questo errore
> Warning: mktime(): Windows does not support negative values for this function
che è logico perchè il timestamp di una data precedente al 1970 restituisce -1Infatti sulla stessa guida che hai citato c'è anche scritto
However, before PHP 5.1.0 this range was limited from 01-01-1970 to 19-01-2038 on some sistem (e.g. Windows).
Non esiste un sistema diverso per la gestione delle date?
Grazie
-
Ho risolto aggiornando la versione del PHP
Però sono curioso di sapere se esiste comunque un altro modo per gestire le date, che non sia il formato unix.
Thanks!
-
non ha senso usare un timestamp per le date di nascita... che ti frega di salvare ore,minuti,secondi???
non puoi usare un campo DATE normale?? tanto mica devi fare calcoli particolari con queste date...
-
vista la versalità del timestamp, può essere utile per controllare con estrema facilità l'esattezza della data...
-
Io credo che dovresti creartelo da te un sistema per la gestione delle date.
Il formato date non è compatibile con tutti i DBMS.
Io le memorizzo come AAAAMMGG, ho scritto un paio di funzioncine per la conversione da DB a browser e viceversa, un paio per il controllo della validità ed il gioco è fatto.
-
Grazie del consiglio comanche.
Se ti va potresti postare le funzioni di cui parli?
ThanksAndrea
-
Queste sono alcune:
[php]// conversione di una data dal formato AAAAMMGG nel formato GG/MM/AAAA
function convData($data) {
$dataconv="";
if (!empty($data)) {
$anno=substr($data,0,4);
$mese=substr($data,4,2);
$giorno=substr($data,6,2);
$dataconv=$giorno."/".$mese."/".$anno;
}
return $dataconv;
}// conversione di una data dal formato GG/MM/AAAA nel formato AAAAMMGG
function convDataDb($data) {
$dataconv="";
if (!empty($data)) {
$anno=substr($data,6,4);
$mese=substr($data,3,2);
$giorno=substr($data,0,2);
$dataconv=$anno.$mese.$giorno;
if (!(checkdate($mese,$giorno,$anno)))
return false;
} else
return false;
return $dataconv;
}//passare l'argomento data gia formattato
function ctrData($data){
if (!is_numeric($data))
return false;
if (!checkdate(substr($data,2,2),substr($data,4,2),substr($data,0,2)))
return false;
else
return true;
}function dataZero() {
return "00000000";
}function dataOggi() {
return date("Ymd");
}
[/php]ma non prendere per oro colato quello che dico, può essere che gli altri approcci sono migliori...
ciao
-
Usare un formato standard di mysql (timestamp, date,...) garantisce maggiore versatilità.
Non c'è bisogno di PHP per formattare o fare calcoli con le date, basta la query giusta.
Ad esempio, per formattare una data: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format
Per calcolare l'età? http://dev.mysql.com/doc/refman/5.1/en/date-calculations.html
Nel tuo caso il formato più adatto penso sia date
-
Ok, grazie a tutti per i consigli.
Ho adottato il timestamp... in effetti è più semplice e versatile da utilizzare.