Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] dodawanie daty
Forum PHP.pl > Forum > Przedszkole
Piotrwusek
Witam

Dodaje do obecnej daty 7 dni!

  1. <?php
  2. $dni = 7;
  3. $data = date("Y-m-d");
  4. $wynik = date("Y-m-d",(strtotime($data) + (60*60*24*$dni)));
  5. ?>


$wynik to wynik (obecna data + 7 dni) a jak do $wynik dodać obecną godzinę-minutę-sekundę
artega
Czy nie prościej tylko raz obliczyć date?
  1. <?php
  2. $dni = 7;
  3. $wynik = date("Y-m-d H:i:s", time()+(60*60*24*$dni));
  4. ?>
Piotrwusek
A jak zrobić odejmowanie

Bo analizując twój kod otrzymałem takie coś

jeżeli $pon1['data'] to przyszła data w formacie rok miesiąc dzień godzina minuta sekunda


  1. <?php
  2. $pozostalo = strtotime($pon1['data']) - time() / (60*60*24);
  3. ?>



Jednak to jest błędne.....


Jak odjąć datę w formacie rok miesiąc dzień godzina minuta sekunda od innej daty w formacie rok miesiąc dzień godzina minuta sekundę ?
Szupien
Cytat(artega @ 21.03.2008, 20:27:44 ) *
Czy nie prościej tylko raz obliczyć date?
  1. <?php
  2. $dni = 7;
  3. $wynik = date(&#092;"Y-m-d H:i:s\", time()+(60*60*24*$dni));
  4. ?>


It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '1.0/no DST' instead
artega
Najlepiej działać na UNIX'owych znacznikach czasu, wtedy sprawa jest prosta jak odejmowanie jednej liczby od drugiej. Jeżeli nie masz innego wyjścia jak działać na ciągach reprezentujących date to najprostrzym sposobem jest przekonwertowanie go na znacznik czasu, oto przykład funkcji i jej użycia
  1. <?php
  2.  
  3. function datetostamp($date)
  4. {
  5. $stamp = mktime(
  6. (int) substr($date, 11, 2), (int) substr($date, 14, 2), (int) substr($date, 17, 2),
  7. (int) substr($date, 5, 2), (int) substr($date, 8, 2), (int) substr($date, 0, 4)
  8. );
  9.  
  10. return $stamp;
  11. }
  12.  
  13. $diff = datetostamp("2008-03-22 12:30:54") - datetostamp("2008-01-01 00:00:00");
  14.  
  15. echo floor($diff / (60*60*24));
  16.  
  17. ?>

Przykład oblicza ile mineło dni od początku roku zaokrąglając w dół.
Piotrwusek
dzięki wielkie funkcja się przydała

tylko ona nie odejmuje godzin minut i sekund
artega
Możesz podać przykład w jakich warunkach nie spełnia założeń?
Ten kod

  1. <?php
  2. $diff = datetostamp("2008-03-22 12:30:54") - datetostamp("2008-03-22 12:30:00");
  3.  
  4. echo $diff;
  5. ?>

daje oczekiwany wynik w sekundach, czyli 54 może w innej części kodu masz błąd.
Piotrwusek
dobra otrzymałem taki wynik po odjęciu 1192597

jak się domyślam ten wynik jest w sekundach, chcę być pewien?
artega
Tak, ta funkcja zamienia ciąg na timestamp, czyli ilość sekund od epoki UNIX'a smile.gif dalej wystarczy tylko dzielić na mniejsze i problem z głowy
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.