Domanda

Sto cercando di utilizzare strtotime() per rispondere a un pulsante fare clic per passare -1 e +1 giorni (due tasti) relativo al giorno avanzato al precedente, fare clic su.

Esempio:

  • Il 10 del mese, di fare clic su "-1 giorno" pulsante, e ora la data legge il 9 ° posto.
  • Fare clic con il "-1 giorno" pulsante di nuovo e ora la lettura uniti, il 8 ° giorno.
  • Fare clic con il "+1 giorno" e ora la lettura uniti è il 9.

Capisco i pulsanti e la visualizzazione della data e dell'utilizzo di $_GET e PHP per passaggio di informazioni, ma come faccio a strtotime() per lavorare sulla relativa data dall'ultima volta che il tempo di viaggio script è stato chiamato?

Il mio lavoro mi ha permesso di mostrare di ieri e di oggi relativo alla ora ma non relativo, per esempio, il il giorno prima di ieri, o il il giorno dopo domani.O se io uso il mio "lunedì scorso" pulsante, il giorno prima o dopo qualunque che giorno è.

È stato utile?

Soluzione

Di lavoro dalle chiamate precedenti per lo stesso copione non è davvero una buona idea per questo tipo di cosa.

Quello che vuoi fare è passare sempre due valori di script, la data e il movimento.(l'esempio è semplificato in modo che solo l'oggi, e sempre di aggiungere un giorno)

Esempio

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

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

Si prega di notare che si dovrebbe verificare per assicurarsi che isset($_GET[data]) prima

Se si vuole veramente lavorare dalle chiamate precedenti per lo stesso copione, si sta andando ad avere a che fare con le sessioni, quindi si prega di specificare se questo è il caso.

Altri suggerimenti

Kevin, si lavora un solido fondamento assoluto (es.data / ora), non un parente periodo di tempo.È quindi possibile convertire i relativi periodi di tempo.Così, per esempio, per impostazione predefinita, se si stavano mostrando un calendario, ti piacerebbe lavorare da oggi data.

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

Si può vedere in funzione definizione di funzione strtotime, il secondo argomento è ora, cioèè possibile modificare la data a partire dalla quale è relativa.

Questo potrebbe essere più facile da visualizzare attraverso un rapido ciclo

Questo ciclo, attraverso gli ultimi 10 giorni di utilizzo di "ieri" come primo argomento.Utilizziamo poi data alla stampa.

$time = time();

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

Così passa il tempo/data in via URI, in modo da poter salvare la relativa data.

Dopo un momento di ispirazione, la soluzione alla mia domanda diventato chiaro per me (ero in sella alla mia moto).L' '$ora' parte di

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

deve essere impostata come la data corrente.Non "$() il tempo-ora", ma "la data corrente mi interessa / mi sto guardando il mio log per.

vale a dire:se sto guardando la scheda attività di riepilogo per 8/10/2008, poi che è "ora", secondo la funzione strtotime();ieri è 8/09 e domani è 8/11.Una volta ho insinuarsi un giorno, "ora" è 8/11, ieri è 8/10, e domani è 8/12.

Ecco il codice di esempio:

<?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 />";
?>

Cliccando su "<<"e ">>" avanzate e ritirate il giorno in questione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top