Foros del Web » Programando para Internet » PHP »

fecha se cambia luego del año 2038

Estas en el tema de fecha se cambia luego del año 2038 en el foro de PHP en Foros del Web. tengo un problema que me parece suber raro, al generar cronogramas de pago lo muestro de la siguiete forma 05-may-2012, 06-dic-2012, etc. pero al llegar ...
  #1 (permalink)  
Antiguo 13/12/2012, 17:48
Avatar de gokufast  
Fecha de Ingreso: abril-2007
Mensajes: 540
Antigüedad: 17 años
Puntos: 3
fecha se cambia luego del año 2038

tengo un problema que me parece suber raro, al generar cronogramas de pago lo muestro de la siguiete forma 05-may-2012, 06-dic-2012, etc.

pero al llegar al 2038 me sale 01-jan-1970!!!.

revise mi base de datos y las fechas van hasta el 2050 sin problemas.

el codigo es el siguiente:
setlocale(LC_ALL,"es_ES","esp");
$formato_fecha = '%d-%b-%Y';
$fecha = strftime($formato_fecha,strtotime($fecha_de_BD));

como puedo solucionarlo?
  #2 (permalink)  
Antiguo 13/12/2012, 17:54
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: fecha se cambia luego del año 2038

Revisa esto:
http://en.wikipedia.org/wiki/Year_2038_problem

También de la propia documentación de strtotime:
Cita:
Iniciado por Manual de PHP
El rango válido de una marca de tiempo es típicamente desde Fri, 13 Dec 1901 20:45:54 UTC a Tue, 19 Jan 2038 03:14:07 UTC. (Estas son las fechas que se corresponden con los valores máximo y mínimo de un entero con signo de 32 bit.) Adicionalmente, no todas las plataformas soportan marcas de tiempo negativas, por lo tanto el rango de la fecha puede estar limitado a fechas no anteriores a la época Unix. Esto significa que, p.ej., las fechas anteriores al 1 de Enero del 1970 no funcionarán en Windows, en algunas distribuciones de Linux, y en otros pocos sistemas operativos. PHP 5.1.0 y versiones posteriores superan esta limitación.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 13/12/2012, 21:25
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: fecha se cambia luego del año 2038

Holas,

Te recomiendo que uses el DateTime que es mucho mas completo:
Código PHP:
Ver original
  1. $date = new DateTime('2012-12-12');
  2. echo $date->format('d-b-Y');

Tambien depende de en que formato tengas en tu BD de acuerdo lo usas como parametro en el DataTime:

http://php.net/manual/en/datetime.format.php

Saludos,
__________________
.: Gildus :.
  #4 (permalink)  
Antiguo 14/12/2012, 07:29
Avatar de gokufast  
Fecha de Ingreso: abril-2007
Mensajes: 540
Antigüedad: 17 años
Puntos: 3
Respuesta: fecha se cambia luego del año 2038

Cita:
Iniciado por gildus Ver Mensaje
Holas,

Te recomiendo que uses el DateTime que es mucho mas completo:
Código PHP:
Ver original
  1. $date = new DateTime('2012-12-12');
  2. echo $date->format('d-b-Y');

Tambien depende de en que formato tengas en tu BD de acuerdo lo usas como parametro en el DataTime:

http://php.net/manual/en/datetime.format.php

Saludos,
Pero no pasaria lo mismo que dice David?
  #5 (permalink)  
Antiguo 14/12/2012, 07:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: fecha se cambia luego del año 2038

Creo que si, porque la fecha no depende del lenguaje, sino del S.O., y en ese caso el problema subsiste.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 14/12/2012, 08:47
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: fecha se cambia luego del año 2038

Creo que mejor nos confirma @gokufast si persiste el problema y tambien como lo estaria aplicando realmente.
Por cierto que sistema operativo usas?

Saludos,
__________________
.: Gildus :.
  #7 (permalink)  
Antiguo 14/12/2012, 09:46
Avatar de gokufast  
Fecha de Ingreso: abril-2007
Mensajes: 540
Antigüedad: 17 años
Puntos: 3
Respuesta: fecha se cambia luego del año 2038

Cita:
Iniciado por gildus Ver Mensaje
Creo que mejor nos confirma @gokufast si persiste el problema y tambien como lo estaria aplicando realmente.
Por cierto que sistema operativo usas?

Saludos,
windows 7 de 64 bits
  #8 (permalink)  
Antiguo 14/12/2012, 09:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: fecha se cambia luego del año 2038

¿Ese es el servidor donde está la base de datos, o donde corre la aplicación?
¿El generador de reportes es de 64 bits, o es de 32?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 14/12/2012, 09:58
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: fecha se cambia luego del año 2038

Como no mencionas si aplicaste el código y como lo estas aplicando, asumo que se soluciono o no?.
__________________
.: Gildus :.
  #10 (permalink)  
Antiguo 14/12/2012, 10:02
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: fecha se cambia luego del año 2038

Bueno, habia mencionado que dependeria del formato en que este guardando en tu Tabla, tambien el tipo si es Varchar, o Date o Datetime, etc. hasta un Blob podria ser (o imagino). Si esta en el tipo Date entonces podria ser YYYY-MM-DD, entonces ese valor lo usas con el DateTime():

Código PHP:
Ver original
  1. $date = new DateTime($de_tu_tabla['elnombredetucampodeltipoquefecha']);
  2. echo $date->format('d-b-Y');
Y según la salida del echo nos cuentas.

Saludos,
__________________
.: Gildus :.
  #11 (permalink)  
Antiguo 14/12/2012, 10:14
Avatar de gokufast  
Fecha de Ingreso: abril-2007
Mensajes: 540
Antigüedad: 17 años
Puntos: 3
Respuesta: fecha se cambia luego del año 2038

bueno aun no hice la prueba porque estoy terminando un informe, lo hare por la noche las pruebas pertinentes, pero los datos de las fechas las muestro directamente en pantalla usando un while. en mi tabla el campo fecha esta como DATE.
  #12 (permalink)  
Antiguo 14/12/2012, 10:36
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: fecha se cambia luego del año 2038

Y también posteas el código que usas, sino podríamos adivinar y alargar muchísimo este hilo.
__________________
.: Gildus :.
  #13 (permalink)  
Antiguo 14/12/2012, 12:02
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: fecha se cambia luego del año 2038

No sirve DateTime format ya que no soporta locales, la letra b tampoco significa nada. Él lo que quiere es "traducir" el mes en forma corta (dec por dic), yo sugiero un reemplazo y ya te evitas problemas con las fechas basadas en timestamp *nix.

Cita:
Este método no utiliza regiones. Todas las salidas son en inglés.
http://php.net/manual/es/datetime.format.php
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #14 (permalink)  
Antiguo 14/12/2012, 13:08
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: fecha se cambia luego del año 2038

Bueno lo de locales no te refieres a los TimeZone ?:

http://php.net/manual/es/datetime.settimezone.php

Y bueno lo de reemplazar con un str_replace y otro que convenga tambien seria una opcion y te evitas el problema.

Ya nos contara @gokufast.
__________________
.: Gildus :.
  #15 (permalink)  
Antiguo 14/12/2012, 14:07
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: fecha se cambia luego del año 2038

Me refiero a la configuración regional (setlocale), el método format no es afectado por esta función.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: año, fecha, cambios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:21.