2011-10-12 4 views
9

Voglio visualizzare $ row-> data di deposito nel formato gg-mm-aaaa.PHP strtotime restituisce una data 1970 quando la colonna data è nullo

Se la colonna di data nel database è NULL la data visualizzata è: 01-01-1970

echo "<td align=center>".date('d-m-Y', strtotime($row->depositdate))."</td>"; 

Se la data è nullo nel database dovrebbe visualizzare nulla, altrimenti la data gg-mm -yyy dovrebbe essere visualizzato il formato.

Grazie in anticipo

Sandeep

+0

Poi controlla se il valore è nullo e se lo è, non aspettatevi 'date' funzione per fare il vostro lavoro per voi - Display stringa vuota, altrimenti visualizza l'output della funzione 'date'. –

risposta

16

NULL viene interpretato come 0 da strtotime, poiché vuole passare un timestamp intero. Un timestamp di 0 significa 1-1-1970.

Quindi è necessario verificare da soli se $row->depositdate === NULL, e in tal caso, non chiamare affatto strtotime.

+0

grazie GolezTrol .... – Sandy505

6

NULL viene convertito in 0 - l'epoca (1-1-1970)

fare questo, invece

echo "<td align=center>".($row->depositdate ? date('d-m-Y', strtotime($row->depositdate)) : '')."</td>"; 
+0

Era perfetto! –

0

È necessario verificare se $ row-> depositdata is_null precedenza o controllare per 0 dopo strtotime se il valore di $ row-> depositdata è irriconoscibile per strtotime.

echo "<td align=center>"; 
    if (!is_null($row->depositdate)) 
    { 
    $jUnixDate = strtotime($row->depositdate)); 
    if ($jUnixDate > 0) 
    { 
      echo date('d-m-Y', $jUnixDate); 
    } 
    } 
    echo "</td>"; 

strtotime aspetta di avere una stringa contenente un formato di data in Inglese e proverà a passare questo formato in un Unix timestamp (il numero di secondi dal 1 gennaio 1970 00:00:00 UTC), relativo al timestamp dato in ora, o l'ora corrente se ora non viene fornita.

più su unixtime e problema Y2K38: http://en.wikipedia.org/wiki/Year_2038_problem

-1

Oh! So perché questo succede? Semplicemente non hai incluso "depositdate" nella tua query SELECT. In primo luogo Change SQL query per selezionare tutti con segno wild card come mostrato qui

$sql = "SELECT * FROM `yourtable`"; 
+0

Come fai a sapere che non ho incluso "data di deposito" nella query SELECT? Per favore leggi attentamente la domanda ..... – Sandy505