Newsgroup: it.comp.www.php
Titolo: problema con le date...

In un campo MySQL io ricevo la data in questo formato yyyy-mm-dd, ossia se
faccio
 echo $row['miadata'];
quello che ottengo č   2003-11-26      (per esempio)
Io vorrei invece convertirlo cosě: 26/11/2003.
Come posso fare?
Grazie,
  Luca

 Io vorrei invece convertirlo così: 26/11/2003.


 Io vorrei invece convertirlo cosě: 26/11/2003.
una bella soluzione elegante potrebbe essere questa:
$data = ereg_replace("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", "\\3-\\2-\\1",
$row['miadata']);
ciao
mike

 Io vorrei invece convertirlo cosě: 26/11/2003.
Se vuoi anche il mese in forma testuale usa questa funzione:
(va bene anche per formati aaaa-mm-gg hh:mm:ss)
<?
function formatta_data ($var) {
$mesi=array("Gennaio",
"Febbraio",
"Marzo",
"Aprile",
"Maggio",
"Giugno",
"Luglio",
"Agosto",
"Settembre",
"Ottobre",
"Novembre",
"Dicembre");
$a=explode(' ',$var);
$b=explode('-',$a[0]);
$s=$b[2]." ".$mesi[ceil($b[1])-1]." ".$b[0]." ".substr($a[1],0,5);
return $s;
}
?>
e la richiami con
<?
echo formatta_data($row[miadata]);
?>
Ciao
--
CLS
www.vallecaudina.net

 ha scritto nel messaggio
news:Mj%X9.39993$ZE.11...@twister2.libero.it...

Meglio cosě:
<?php
$data = "2003-11-26";
echo date("d/m/Y",strtotime($data));
?>

 ?>
Grazie a tutti!
Una curiosità... come fa strtotime a sapere che la data è nel formato
yyyy-mm-dd anziché per esempio yyyy-dd-mm?
Ciao,
  Luca

 yyyy-mm-dd anziché per esempio yyyy-dd-mm?
http://it.php.net/manual/it/function.strtotime.php
http://www.gnu.org/manual/tar-1.12/html_chapter/tar_7.html


Avete verificato che funzioni anche con date anteriori alla UNIX epoch? a me
dava errori .
x cui ho sempre usato la funzione di mysql DATE_FORMAT.
Ciao!

 ?>
si ma con le date anteriori alla UNIX epoch non funziona e ti da errore??
Con l'espressione regolare funziona lo stesso.
Comunque sia per date dopo UNIX epoch è meglio come hai scritto tu :-))
ciao
michele


setlocale (LC_TIME, 'it');
print strftime ("%A %d %B %Y %H:%M:%S", time());
// stampa esempio : venerdģ 24 gennaio 2003 12:44:38 //

 // stampa esempio : venerdģ 24 gennaio 2003 12:44:38 //
Grazie, io perņ quella funzione la uso per formattare date estratte da
database, solitamente in formato DATE o DATETIME.
Scusate x il temporaneo cambio di nick, ma dopo la formattazione mi sono
incasinato con l'accont delle news.
Ciao
--
CLS
www.vallecaudina.net


hai ragione...perň con ereg_replace fai tutto in una riga
anziche creare una funzione apposita.
Anche se poi il risultato č sempre quello e  dipende sempre dal
modo di lavorare di ognuno di noi.
Tutte le soluzione sono buone purchč diano il risultato voluto.
ciao

 x cui ho sempre usato la funzione di mysql DATE_FORMAT.
Scusate l'ignoranza... ma cos'è l'UNIX epoch?
Grazie,
  Luca


Unix epoch dovrebbe essere 01/01/1970 che č la data di riferimento per
diverse funzioni di data e ora dei sistemi unix/linux.
A me davano errore strtotime o altre funzioni di gestione del tempo ... per
es. date() se formattavo date ("d/m/Y") anteriori al 1 gennaio '70  mi
veniva restituita appunto la unix epoch.
A me serviva registrare l'anagrafica di alcune persone , tra le quali molte
erano nate prima del 1970 e non c'era verso di formattarle in php per questo
sono ricorso ad una funzione di mysql direttamente nella query.
Tra i vari consigli quello di explode mi č sembrato il piů semplice in
alternativa alla funzione di mysql date_format.
cmq Si accettano approfondimenti ... sono un profano!
ciao teo

 ciao
riferimento al thread superiore ...
Unix epoch dovrebbe essere 01/01/1970 che è la data di riferimento per
diverse funzioni di data e ora dei sistemi unix/linux.
A me davano errore strtotime o altre funzioni di gestione del tempo ... per
es. date() se formattavo date ("d/m/Y") anteriori al 1 gennaio '70  mi
veniva restituita appunto la unix epoch.
A me serviva registrare l'anagrafica di alcune persone , tra le quali molte
erano nate prima del 1970 e non c'era verso di formattarle in php per questo
sono ricorso ad una funzione di mysql direttamente nella query.
Tra i vari consigli quello di explode mi è sembrato il più semplice in


 Con l'espressione regolare funziona lo stesso.
Nel caso di date che non rientrano nella unix epoch puoi comunque fare una
cosa del genere... senza scomodare le regxp.
A livello di prestazioni dovrebbe essere meglio...
Uso le s al posto di d per evitare problemi con i numero inferiori a 10.
<?PHP
$data = "2003-11-26";
list($anno,$mese,$giorno) = sscanf($data,"%4s-%2s-%2s");
echo "$giorno/$mese/$anno";
?>
Ovvio che la regxp poi č piů versatile e potente... ma dipende sempre da
quello che uno deve fare (nel caso con sscanf se ci fosse una data 2003-9-26
il risultato non sarebbe quello voluto... ma qui il campo viene preso da un
db e suppongo che la formattazione sia sempre a 2 cifre per mesi e giorni e
a 4 per gli anni).
Dipende sempre dal contesto e dalla portata dell'applicazione..
Volendo anche ...
<?PHP
$data = "2003-11-26";
echo implode("/",array_reverse(sscanf($data,"%4s-%2s-%2s")));
?>
Sono parecchie le strade che portano a roma :)

 ciao
la tua soluzione è sicuramente + comoda, e in effetti non ci avevo
pensato...
la funzione che ho postato la creai per un guestbook, poi ho continuato ad
usarla per tutti gli altri miei siti...
CIAO
--
--
CLS
www.vallecaudina.net

 usarla per tutti gli altri miei siti...
anche io uso spesso delle funzioni che mi sono fatto ed uso quelle
per comodità...senza pensare che ci sono soluzioni piu rapide.
Ogni tanto poi prendo queste funzioni e gli do una rinfrescata.
Con il tempo si programma sempre in modo diverso e si tende
ad essere il piu stringati possibile con il codice e si diventa maniaci
del "codice breve" ...:-)) e si vorrebbe riscrivere tutto quello che si è
scritto in passato..
E' una mania....
saluti tutti

 saluti tutti
Una bella mania, però. Io ho da poco scoperto le funzioni (sono autodidatta
e imparo facendo), e ne sto facendo un uso esagerato... :-)
Ciao
--
--
CLS
www.vallecaudina.net

 Come posso fare?
a parte i metodi gia' spiegati...
io ho fatto una piccola classuzza che fa varie operazioni su date ed ore
forse puoi tornarti/vi utile..
http://www.phpclasses.org/browse.html/package/943.html
bye