Avansarea prin date relative folosind strtotime ()

Încerc să folosesc strtotime() pentru a răspunde la un click pe buton pentru a avansa -1 și +1 zile (două butoane) în raport cu ziua avansată pe clicul precedent.

Example:

  • E pe data de 10 a lunii, fac clic pe butonul "-1 zi", iar data este data de 9.
  • Faceți clic pe butonul "-1 zi" din nou și acum citirea indică a opta zi.
  • Faceți clic pe butonul "+1 zi", iar citirea afișează că este al 9-lea.

Înțeleg butoanele și afișarea datei și folosind $ _GET și PHP pentru a transmite informații, dar cum pot obține strtotime() pentru a lucra la data relativă de la ultima dată când era apelat scriptul de călătorie?

Lucrul meu până acum mi-a permis să-mi arate ieri și astăzi în legătură cu acum , dar nu în raport cu, de exemplu, ziua precedentă ieri sau ziua de după ziua de mâine . Sau dacă folosesc butonul "ultima dimineață" , cu o zi înainte sau după ce este ziua respectivă.

0
fr hi bn

3 răspunsuri

După un moment de inspirație, soluția la întrebarea mea mi-a devenit evidentă (călăreau bicicleta mea). Partea "$ now" din

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

trebuie să fie setată ca dată curentă. Nu "$ time() - now", dar "data curentă mă îngrijorează/mă uit la jurnalul meu pentru.

adică: dacă mă uit la sumarul sumar pentru 8/10/2008, atunci acesta este "acum" în conformitate cu strtotime (); ieri este 8 septembrie și mâine este 8/11. Odată ce am creep-o zi, "acum" este 8/11, ieri este 8/10, iar mâine este 8/12.

Iată exemplul de cod:

<?php

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

//convert given date to unix timestamp
$date=strtotime($givendate);
echo "Date Set As...: ".date('m/d/Y',$date)."
"; //use given date to show day before $yesterday=strtotime('-1 day',$date); echo "Day Before: ".date('m/d/Y',$yesterday)."
"; //same for next day $tomorrow=strtotime('+1 day',$date); echo "Next Day: ".date('m/d/Y',$tomorrow)."
"; $lastmonday=strtotime('last monday, 1 week ago',$date); echo "Last Moday: ".date('D m/d/Y',$lastmonday)."
"; //form echo "<form method=\"get\" action=\"{$_SERVER['PHP_SELF']}\">"; //link to subtract a day echo "<< "; //show current day echo "<input type=\"text\" name=\"given\" value=\"$givendate\">"; //link to add a day echo " >>
"; //submit manually entered day echo "<input type=\"submit\" name=\"changetime\" value=\"Set Current Date\">"; //close form echo "<form>
"; ?>

Clicking on the "<<" and ">>" advances and retreats the day in question

0
adăugat

Kevin, lucrezi pe o bază solidă solidă (adică o dată/oră), nu o perioadă de timp relativă. Apoi convertiți la perioadele relative de timp. De exemplu, în mod implicit, dacă afișați un calendar, ați lucra de astăzi.

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

Puteți vedea aici în definiția funcției strtotime, al doilea argument este acum, adică puteți modifica data de la care este relativă.

Acest lucru ar putea fi mai ușor de afișat printr-o buclă rapidă

Aceasta va trece prin ultimele "zile" folosind "ieri" ca primul argument. Apoi vom folosi data pentru ao imprima.

$time = time();

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

Deci, treceți ora/data prin URI, astfel încât să puteți salva data relativă.

0
adăugat

Lucrul cu apelurile anterioare la același script nu este o idee bună pentru acest tip de lucru.

Ceea ce doriți să faceți este să transmiteți întotdeauna două valori la scenariul dvs., la data și la mișcare. (exemplul de mai jos este simplificat, astfel încât să treceți doar data și să adăugați întotdeauna o zi)

Exemplu

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

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

Rețineți că ar trebui să verificați să aveți grijă și de isset ($ _GET [date])

Dacă într-adevăr doriți să lucrați din apelurile anterioare la același script, va trebui să faceți acest lucru cu sesiuni, așa că specificați dacă este cazul.

0
adăugat
un răspuns bun, dar nu uitați citatele $ _GET ['date']
adăugat autor Tech4Wilco, sursa
PHP România, Moldova
PHP România, Moldova
173 participanți

Vorbim despre Yii, Laravel, Symphony, MySQL, PgSQL, WP, OpenCart... Pentru confort, opriți notificările. Parteneri: https://ciupacabra.com @js_ro @node_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro Joburi: @php_job @Grupuri_IT