Foros del Web » Programando para Internet » PHP »

Sumar días a una fecha del 2037 (Bug)

Estas en el tema de Sumar días a una fecha del 2037 (Bug) en el foro de PHP en Foros del Web. Hola, tengo un problema a la hora de sumar fechas.. Quiero sumar a una fecha dada ciertos días, lo hago con un select en el ...
  #1 (permalink)  
Antiguo 20/10/2011, 10:06
 
Fecha de Ingreso: abril-2009
Ubicación: Zaragoza
Mensajes: 50
Antigüedad: 15 años
Puntos: 1
Sumar días a una fecha del 2037 (Bug)

Hola, tengo un problema a la hora de sumar fechas..

Quiero sumar a una fecha dada ciertos días, lo hago con un select en el que cargo:

- 15 días
- 30 días (1 mese)
- 60 días (2 meses)
- 90 días (3 meses)
- 180 días (6 meses)
- 360 días (Año)

Utilizo está función..

Código PHP:
function date_sumar_dias($fecha_hoy$dias)
{
        
        if (
$dias 30==0) {   
        
$meses $dias 30;
        
$date $fecha_hoy;   
        
$newdate strtotime '+' $meses ' month' strtotime $date ) ) ;
        
$newdate date 'Y-m-j' $newdate );
        return 
$newdate;
      } else {
        
$date $fecha_hoy;
        
$newdate strtotime '+'.$dias.' day' strtotime $date ) ) ;
        
$newdate date 'Y-m-j' $newdate );
        return 
$newdate;
      }   
    

La función va perfectamente excepto cuando trato de sumar días a una fecha del año 2037.. y al sumarlos salto al 2038 entonces me vuelve a 1970...

Al parecer hay alguna especie de bug en php .. ¿como sumariais días a una fecha sin la ayuda de las funciones date de php para que se tragara el 2038?

Llevo días con lo mismo y no le saco punta ..

Gracias.
  #2 (permalink)  
Antiguo 20/10/2011, 10:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Sumar días a una fecha del 2037 (Bug)

No es ningún bug, si lees el manual descubrirás que es normal pues existe un limite para fechas basadas en timestamp *nix.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 20/10/2011, 10:21
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: Sumar días a una fecha del 2037 (Bug)

Pues no tiene nada que ver con PHP es la maldición del año 2038

tal vez te interese leer esto:

http://es.wikipedia.org/wiki/Problema_del_a%C3%B1o_2038

Usa la clase DateTime para solucionar esas limitaciones:

http://www.php.net/manual/en/class.datetime.php

Código PHP:
Ver original
  1. <?php
  2. $dt = new DateTime('20-10-2011');
  3. $dt->add(new DateInterval('P15000D'));
  4. echo $dt->format('d-m-Y');

Saludos.
__________________
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
  #4 (permalink)  
Antiguo 20/10/2011, 10:24
 
Fecha de Ingreso: julio-2005
Mensajes: 310
Antigüedad: 18 años, 9 meses
Puntos: 36
Respuesta: Sumar días a una fecha del 2037 (Bug)

Hola

En Unix el epoch se difinió el 01/01/1970 a las 00:00 horas así que las funciones de tipo time() te devuelven el número de segundos que han transcurrido desde esa fecha. Los ordenadores no pueden representar valores hasta el infinito, así para 32 bits sólo puedes "jugar" con la fecha hasta el 2037, osea que te cambias a 64 bits o tu aplicación debería controlar esta situación.

En 2037 volveremos a ver un bonito efecto 2000 :D

Edito: Veo que andresdzphp se me adelantó con lo del efecto 2038 jajaja

Saludos.

Etiquetas: fecha
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 23:40.