2012-03-29 9 views
5

Mi paquete de alojamiento compartido en 1 y 1 solo incluye PHP 5.2.17, por lo que no puedo usar el objeto DateTime. ¡Muy molesto!Agregar X semanas a una fecha usando PHP 5.2

Actualmente tengo este código

$eventDate = new DateTime('2013-03-16'); // START DATE 
$finishDate = $eventDate->add(new DateInterval('P'.$profile["Weeks"].'W')); 

Pero, obviamente, no va a funcionar.

¿Cómo puedo hacer lo mismo con el código que funcionará con PHP5.2? (El código añade un número X de semana a una fecha determinada.)

Respuesta

11

acaba de obtener la marca de tiempo con strtotime() y añadir * x segundos de una semana

$newTime = strtotime('2013-03-16') + ($numberOfWeeks * 60 * 60 * 24 * 7); // 604800 seconds 

o lo que acaba de descubrir:

$newTime = strtotime('+'.$numberOfWeeks.' weeks', strtotime('2013-03-16')); 

alternativa, se puede utilizar la clase DateTime. Utilice el método modify para cambiar la fecha (como en strtotime):

$d = new DateTime('2013-03-16'); 
$d->modify('+'.$numberOfWeeks.' weeks'); 
+1

'strtotime()' trae más problemas de lo que parece. Usa la función de clase 'DateTime' para evitar errores extraños al calcular los períodos y nunca perderás ni un segundo. –

+0

@Paul ¿Sabía que se trata de la falta de 'DateInterval' en PHP 5.2? Por supuesto, siempre hay otra respuesta. –

+0

¿Y qué pasa con ['DateTime :: modify()'] (http://www.php.net/manual/en/datetime.modify.php), que es de _PHP 5.2.0_? También funciona con valores positivos y negativos. Hace solo unos días he corregido el error en mi propio producto bec. Estaba calculando el intervalo por diferencia de marcas de tiempo y en el margen de 2 meses (de octubre a noviembre) estaba perdiendo 2 semanas. Corregido a la implementación 'DateTime' y eso es todo. –

3

Usted puede utilizar el objeto DateTime en PHP 5.2, es sólo la añadir método que fue añadida en PHP 5.3. Puede usar the modify method en PHP 5.2.

$finishDate = $eventDate->modify('+'.$profile["Weeks"].' weeks'); 

Tenga en cuenta que esto modificará el objeto en el que realiza la operación. Entonces $ eventDate también se verá alterado.

Cuestiones relacionadas