2011-10-12 25 views
9

Quiero mostrar $ row-> fecha de depósito en formato dd-mm-yyyy.PHP strtotime devuelve una fecha de 1970 cuando la columna de fecha es nula

Si la columna de la fecha de la base de datos es nula la fecha que aparece es: 01-01-1970

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

Si la fecha es nulo en la base de datos debe mostrar nada, de lo contrario la fecha dd-mm -yyyy formato debe ser mostrado.

Gracias de antemano

Sandeep

+0

A continuación, comprobar si el valor es nulo y si lo es, no esperes 'date' función para hacer su trabajo para usted - pantalla cadena vacía; de lo contrario, muestra la salida de la función 'fecha'. –

Respuesta

16

NULL se interpreta como 0 por strtotime, ya que quiere ser pasado una marca de tiempo entero. Una marca de tiempo de 0 significa 1-1-1970.

Así que tendrá que comprobar por sí mismo si $row->depositdate === NULL, y si es así, no llame a strtotime en absoluto.

+0

gracias GolezTrol .... – Sandy505

6

NULL se convierte en 0 - la época (1-1-1970)

haga esto en lugar

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

¡Eso fue perfecto! –

0

Es necesario comprobar si $ de fila> depositdata is_null previamente o detectar 0 tras strtotime si el valor de $ row-> depositdata es irreconocible para 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 espera ser dada una cadena que contiene un formato de fecha Inglés e intentará procesarla ese formato en un Unix timestamp (el número de segundos desde 1 de enero 1970 00:00:00 GMT), en relación con la fecha y hora dado ahora, o la hora actual si ahora no se proporciona.

más sobre unixtime y el problema Y2K38: http://en.wikipedia.org/wiki/Year_2038_problem

-1

Oh! Sé por qué sucede esto? Simplemente no ha incluido la "fecha de depósito" en su consulta SELECCIONAR. En primer lugar Cambio consulta SQL para seleccionar todos con signo comodín como se muestra aquí

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

¿Cómo sabes que no he incluido "depósito" en la consulta SELECCIONAR? Por favor, lea la pregunta con cuidado ..... – Sandy505

Cuestiones relacionadas