2010-04-09 14 views
10

No sé cómo explicar esto correctamente, pero solo un poco de muestra para ustedes para que puedan entender lo que estoy tratando de decir.php get future date time

Hoy es 09 de abril de 2010

7 días a partir de ahora es de abril de 16,2010

Estoy buscando un código php, que me puede dar la fecha exacta que indica el número de días de intervalo antes de la fecha actual.

He estado buscando un hilo que puede resolver o incluso dar una pista sobre cómo resolver este, pero no encontré ninguno.

+0

Podría esto reformularse como "Quiero añadir' $ x' cantidad de días para una fecha determinada "? – deceze

+0

Su pregunta no está clara. ¿Puede volver a especificar cuáles son los parámetros conocidos y qué valores le interesan? –

Respuesta

25

Si está usando PHP> = 5.2, le recomiendo encarecidamente que utilice el nuevo objeto DateTime, que hace que trabajar con fechas mucho más fácil:

<?php 
$date = new DateTime("2006-12-12"); 
$date->modify("+7 day"); 
echo $date->format("Y-m-d"); 
?> 
+0

gran respuesta ,, me ayuda mucho –

+1

o para un 1 línea 'echo date_create (" 2006-12-12 ") -> modificar (" + 7 días ") -> formato (" Y-m-d ");' –

9

Echa un vistazo aquí - http://php.net/manual/en/function.strtotime.php

<?php 
// This is what you need for future date from now. 
echo date('Y-m-d H:i:s', strtotime("+7 day")); 

// This is what you need for future date from specific date. 
echo date('Y-m-d H:i:s', strtotime('01/01/2010 +7 day')); 
?> 
+0

+1. Es posible que no desee 'echo strtotime (...)'. En su lugar, use el valor devuelto dentro de la función de fecha, como 'echo date ('Y-m-d H: i: s', strtotime ('- 7 días'))'. –

0

Usted puede utilizar mktime con la fecha. (http://php.net/manual/en/function.date.php)

Fecha le ofrece la fecha actual. Esto es mejor que simplemente sumar/restar a una marca de tiempo, ya que puede tener en cuenta el horario de verano.

<?php 
# this gets you 7 days earlier than the current date 
$lastWeek = mktime(0, 0, 0, date("m") , date("d")-7, date("Y")); 
# now pretty-print it out (eg, prints April 2, 2010.) 
echo date("F j, Y.", $lastWeek), "\n"; 
?> 
2

Tendrás que mirar en strtotime(). Me imagino que su código final sería algo como esto:

$future_date = "April 16,2010"; 
$seconds = strtotime($future_date) - time(); 
$days = $seconds /(60 * 60* 24); 
echo $days; //Returns "6.0212962962963" 
+0

"6.0212962962963" - ejemplo clásico de problema de precisión de flotante de PHP :) –

+0

No realmente, solo el _exact_ número de días representados como un decimal. – Sam152

1

Si está utilizando PHP> = 5.3, esta podría ser una opción.

<?php 
$date = new DateTime("2006-12-12"); 
$date->add(new DateInterval("P7D")); 
?> 
5

La respuesta aceptada no está mal, pero no es la mejor solución:

El DateTime clase toma una cadena opcional en el constructor, que puede definir la misma lógica que el modificar método.

<?php 
$date = new DateTime("+7 day"); 

Por ejemplo:

<?php 
namespace DateTimeExample; 

$now = new \DateTime("now"); 
$inOneWeek = new \DateTime("+7 day"); 

printf("Now it's the %s", $now->format('Y-m-d')); 
printf("In one week it's the %s", $inOneWeek->format('Y-m-d')); 

Para obtener una lista de formatos relativos disponibles (por el constructor DateTime) echar un vistazo a http://php.net/manual/de/datetime.formats.relative.php