Pregunta

Estoy tratando de utilizar strtotime() para responder a un clic de botón para avanzar -1 y +1 días (dos botones) en relación a los días de antelación a la anterior, haga clic en.

Ejemplo:

  • Es el 10 del mes, haga clic en "-1 día" botón, y ahora la fecha en que se lee como el 9º.
  • I haga clic en el "-1 día" botón de nuevo y ahora la lectura de los estados, el 8º día.
  • I haga clic en el "+1 día" y ahora la lectura de los estados es el 9.

Entiendo que los botones y la visualización de la fecha y el uso de $_GET y PHP para pasar info, pero ¿cómo puedo obtener strtotime() para trabajar en la respectiva fecha de la última vez que el viaje en el tiempo de la secuencia de comandos se llama?

Mi trabajo me ha permitido mostrar ayer y de hoy en relación a ahora pero no con respecto a, por ejemplo, la el día antes de ayer, o el el día después de mañana.O si puedo usar mi "el lunes pasado" botón, el día antes o después de lo que día es.

¿Fue útil?

Solución

Trabajando a partir de convocatorias anteriores para la misma secuencia de comandos no es realmente una buena idea para este tipo de cosas.

Lo que quiero hacer es pasar siempre dos valores de la secuencia de comandos, la fecha y el movimiento.(el siguiente ejemplo se ha simplificado para que sólo pase la fecha, y que siempre va a añadir un día a ella)

Ejemplo

http://www.site.com/addOneDay.php?date=1999-12-31

<?php
   echo Date("Y-m-d",(strtoTime($_GET[date])+86400));
?>

Por favor, tenga en cuenta que usted debe comprobar para asegurarse de que isset($_GET[fecha]) antes así

Si usted realmente desea trabajar a partir de convocatorias anteriores para la misma secuencia de comandos, vas a tener que hacerlo con las sesiones, así que por favor especificar si ese es el caso.

Otros consejos

Kevin, se trabaja sin un sólido fundamento absoluto (es decir,una fecha / hora), no un relativo período de tiempo.A continuación, convertir a la relativa períodos de tiempo.Así, por ejemplo, de forma predeterminada, si se muestra un calendario, tendría que trabajar a partir de la fecha de hoy.

int strtotime  ( string $time  [, int $now  ] )

Se puede ver en la definición de la función aquí de strtotime, el segundo argumento es el de ahora, es decir,usted puede cambiar la fecha a partir de la cual es relativa.

Esto podría ser más fácil visualizar a través de un rápido bucle

Este bucle a través de los últimos 10 días de usar el "ayer" como el primer argumento.A continuación, utilizamos la fecha de imprimir.

$time = time();

for ($i = 0; $i < 10; $i++) {
    $time = strtotime("yesterday", $time);
    print date("r", $time) . "\n";
}

Por lo tanto, pasar de la hora/fecha en a través de la URI de modo que usted puede guardar la fecha relativa.

Después de un momento de inspiración, la solución a mi pregunta se hizo evidente para mí (yo estaba montando mi bicicleta).El '$ahora " parte de

strtottime( string $time {,int $now ]) 

necesita ser establecido como la fecha actual.No "$time()-ahora", pero "la fecha actual estoy preocupado con / estoy buscando en mi registro.

es decir:si estoy mirando el resumen de parte de horas para 8/10/2008, a continuación, que es "ahora", según strtotime();ayer se 8/09 y mañana es el 8/11.Una vez que me subía un día, el "ahora" es 8/11, ayer se 8/10, y mañana es el 8/12.

Aquí está el código de ejemplo:

<?php

//catch variable
$givendate=$_GET['given'];

//convert given date to unix timestamp
$date=strtotime($givendate);
echo "Date Set As...: ".date('m/d/Y',$date)."<br />";

//use given date to show day before
$yesterday=strtotime('-1 day',$date);
echo "Day Before: ".date('m/d/Y',$yesterday)."<br />";

//same for next day
$tomorrow=strtotime('+1 day',$date);
echo "Next Day: ".date('m/d/Y',$tomorrow)."<br />";
$lastmonday=strtotime('last monday, 1 week ago',$date);
echo "Last Moday: ".date('D m/d/Y',$lastmonday)."<br />";

//form
echo "<form method=\"get\" action=\"{$_SERVER['PHP_SELF']}\">";

//link to subtract a day
echo "<a href=\"newtimetravel.php?given=".date('m/d/Y',$yesterday)."\"><< </a>";

//show current day
echo "<input type=\"text\" name=\"given\" value=\"$givendate\">";

//link to add a day
echo "<a href=\"newtimetravel.php?given=".date('m/d/Y',$tomorrow)."\"> >></a><br />";

//submit manually entered day
echo "<input type=\"submit\" name=\"changetime\" value=\"Set Current Date\">";

//close form
echo "<form><br />";
?>

Haga clic en el "<<"y ">>" avances y retrocesos del día en cuestión

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top