Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja która zwraca następny/poprzedni dzień dla podanej daty
Forum PHP.pl > Forum > PHP
Civil
Czy pisał ktoś z Was funkcję, która zwróci następny, poprzedni dzień - jeżeli poda się jej datę dzienną? Np. podaje jej 31-03-2007 a ona zwróci mi 1-04-2007.
crash
Jest wiele możliwości na napisanie czegoś takiego, moja (dość nietypowa) propozycja:

  1. <?php
  2. $date = '31-03-2007';
  3.  
  4. echo date( 'd-m-Y', strtotime( '-1 day', strtotime( $date ) ) );
  5. echo '<br/>' . $date . '<br/>';
  6. echo date( 'd-m-Y', strtotime( '+1 day', strtotime( $date ) ) );
  7. ?>
Civil
dzięki, przetestuję ją w praktyce.

nie działa.

Dla 4-4-2007

$beforeday=date('j-n-Y', strtotime( '-1 day', strtotime($that_date) ) );

zwraca mi
27-9-2009

A dla 29-9-2009 ... coś w 2035 roku.
franki01
  1. <?php
  2. function next_day($str) {
  3.  $data = explode('-', $str);
  4.  $next_day = date("j-n-Y", mktime(3,0,0,$data[1],$data[0],$data[2]));
  5.  return $next_day;
  6. }
  7.  
  8. echo next_day('31-01-2007'); // powinno pokazac 1-2-2007 albo jakos tak
  9. ?>
Civil
to zwraca ten sam dzień smile.gif
crash
franki01: W Twojej funkcji brakuje dodawania/odejmowania dnia w mktime" title="Zobacz w manualu PHP" target="_manual, no ale nie do końca będzie to działać dobrze np. przy 1 czy 31 dniu miesiąca, bo wyjdzie z tego albo zerowy albo 32 dzień miesiąca...

Civil: Zdecyduj się na jakis ujednolicony format daty np. DD-MM-YYYY to nie bedzie problemów, albo możesz:

  1. <?php
  2. $date = explode( '-', $date );
  3. $date = sprintf( '%02d-%02d-%04d', $date[ 0 ], $date[ 1 ], $date[ 2 ] );
  4. ?>
franki01
A tak. Sorry bardzo biggrin.gif Poprawka:

  1. <?php
  2. function next_day($str, $days) {
  3.  $data = explode('-', $str);
  4.  $next_day = date("j-n-Y", mktime(3,0,0,$data[1],$data[0],$data[2]) + ($days * 24 * 3600));
  5.  return $next_day;
  6. }
  7.  
  8. echo next_day('31-01-2007', 1); // powinno pokazac 1-2-2007 albo jakos tak
  9. ?>


Drugi argument to ilosc dodanych dni (wartosc -1 to dzien wstecz. -2 to 2 dni wstecz itd).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.