Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] dodawanie daty
Piotrwusek
post 21.03.2008, 19:48:43
Post #1





Grupa: Zarejestrowani
Postów: 399
Pomógł: 7
Dołączył: 11.06.2007
Skąd: Poznan

Ostrzeżenie: (20%)
X----


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ę
Go to the top of the page
+Quote Post
artega
post 21.03.2008, 20:27:44
Post #2





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
Piotrwusek
post 22.03.2008, 10:28:30
Post #3





Grupa: Zarejestrowani
Postów: 399
Pomógł: 7
Dołączył: 11.06.2007
Skąd: Poznan

Ostrzeżenie: (20%)
X----


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ę ?
Go to the top of the page
+Quote Post
Szupien
post 22.03.2008, 10:38:40
Post #4





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 24.11.2007

Ostrzeżenie: (30%)
XX---


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
Go to the top of the page
+Quote Post
artega
post 22.03.2008, 12:47:08
Post #5





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

Ostrzeżenie: (0%)
-----


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ół.
Go to the top of the page
+Quote Post
Piotrwusek
post 22.03.2008, 13:14:19
Post #6





Grupa: Zarejestrowani
Postów: 399
Pomógł: 7
Dołączył: 11.06.2007
Skąd: Poznan

Ostrzeżenie: (20%)
X----


dzięki wielkie funkcja się przydała

tylko ona nie odejmuje godzin minut i sekund
Go to the top of the page
+Quote Post
artega
post 22.03.2008, 13:43:55
Post #7





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Piotrwusek
post 22.03.2008, 14:56:49
Post #8





Grupa: Zarejestrowani
Postów: 399
Pomógł: 7
Dołączył: 11.06.2007
Skąd: Poznan

Ostrzeżenie: (20%)
X----


dobra otrzymałem taki wynik po odjęciu 1192597

jak się domyślam ten wynik jest w sekundach, chcę być pewien?

Ten post edytował Piotrwusek 22.03.2008, 15:03:49
Go to the top of the page
+Quote Post
artega
post 22.03.2008, 16:27:19
Post #9





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.07.2025 - 16:37