2012-06-08 22 views
5

Sto tentando di visualizzare le date nello European format (dd/mm/yyyy) con strtotime ma restituisce sempre 01/01/1970.PHP: strtotime() restituisce sempre 01/01/1970

Ecco il mio codeline:

echo "<p><h6>".date('d/m/Y', strtotime($row['DMT_DATE_DOCUMENT']))."</h6></p>"; 

nel mio database, il campo è un varchar e record sono formattato come yyyy.MM.dd

utilizzare la stessa codeline per un altro campo che è formulato come aaaa-mm-gg (anche varchar) e funziona perfettamente.

Grazie per il vostro aiuto.

+0

Quello è probabilmente perché strtotime assume gg/mm/aaaa invece e se si immette una data come 13 secondi/2012 si lamenta che non esiste il 13 ° mese e che ti dà tempo 0 (1/1/1970) –

risposta

4

Poiché il formato yyyy-mm-dd lavori, provare a sostituire . con -:

date('d/m/Y', strtotime(str_replace('.', '-', $row['DMT_DATE_DOCUMENT']))); 
3

Prova con:

$date = date_parse_from_format("Y.m.d", $row['DMT_DATE_DOCUMENT']); 
$time = mktime($date['hour'], $date['minute'], $date['second'], $date['month'], $date['day'], $date['year']); 
echo "<p><h6>".date('d/m/Y', $time)."</h6></p>"; 

(Usando date_parse_from_format() invece di strtotime())

O semplicemente:

$date = date_parse_from_format("Y.m.d", $row['DMT_DATE_DOCUMENT']); 
echo "<p><h6>{$date['day']}/{$date['month']}/{$date['year']}</h6></p>"; 
+1

Sì, solo che 'date' non accetterà l'output diretto di 'date_parse_from_format'. – deceze

+0

Hai ragione. Mi dispiace, correggo ora. – fquffio

2

Citando da the strtotime page in the PHP manual.

date nella m/d formati/y o d-m-y sono disambiguare osservando il separatore tra i vari componenti: se il separatore è una barra (/), allora l'American m/d/y è assunto; mentre se il separatore è un trattino (-) o un punto (.), si assume il formato europeo d-m-y.

Per evitare possibili ambiguità, è meglio usare ISO 8601 date o DateTime::createFromFormat() (AAAA-MM-DD) quando possibile.

Quindi nel tuo caso dovrebbe essere nel formato AAAA-MM-GG o gg.

Se si vuole analizzare il formato personalizzato quindi utilizzare date_create_from_format

Per esempio,

date_create_from_format('Y.m.d',$row['DMT_DATE_DOCUMENT'])