Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Operacje na datach
Forum PHP.pl > Forum > PHP
pkr
Witam,

mam problem z modyfikowaniem dat. Pojawia on się wraz z dodawaniem godziny. Podczas dodawania godzin i przeskakiwania dnia (np. do godziny 14:00 chcę dodać 11 godzin) dodaje się jeszcze jedna dodatkowa godzina. Chyba chodzi tu o to, że godziny są liczone od zera. Nie wiem jednak jak ominąć ten problem. Ma ktoś rozwiązanie?

W tablicy $dodano znajdują się dane z aktualnej daty. $activateunit zawiera informacje o tym, którą część daty mam zmodyfikować. $activate zawiera liczbę godzin/dni/minut które muszę dodać do aktualnej daty.


  1.  
  2. if($activateunit==1) {
  3. $dokiedy = date("Y-m-d H:i:s",mktime($dodano['hour'],$dodano['minute'],$dodano['second'],$dodano['month'],$dodano['day']+$activate,$dodano['year']));
  4. } else if($activateunit==2) {
  5. $dokiedy = date("Y-m-d H:i:s",mktime($dodano['hour']+$activate,$dodano['minute'],$dodano['second'],$dodano['month'],$dodano['day'],$dodano['year']));
  6. } else if($activateunit==3) {
  7. $dokiedy = date("Y-m-d H:i:s",mktime($dodano['hour'],$dodano['minute']+$activate,$dodano['second'],$dodano['month'],$dodano['day'],$dodano['year']));
  8. }
tehaha
zamiast oddzielnie trzymać minuty, sekundy itd powinieneś całą datę z czasem trzymać w kolumnie typu DATETIME
pkr
Tzn. trzymam w bazie tak jak mówisz. $dodano to aktualna data rozbita na małe elementy. Jest jakiś inny sposób na dodanie do aktualnej daty godzin/minut/dni?
tehaha
tak. http://dev.mysql.com/doc/refman/5.1/en/dat...nction_date-add, przykładowo chcesz aby data ważności była 30 dni to w zapytaniu w tym polu wstawiasz
  1. DATE_ADD(NOW(), INTERVAL 30 DAY)
oczywiście zamiast dni mogą być sekundy, godziny, minuty tygodnie, miesiące, lata, kwartały itd poczytaj instrukcję
krowal
Ale wymyślacie winksmiley.jpg
strtotime() - zwraca unixowy znacznik czasu z którym można już wszystko zrobić.

Przykład z manuala:
  1. <?php
  2. echo strtotime("now"), "\n";
  3. echo strtotime("10 September 2000"), "\n";
  4. echo strtotime("+1 day"), "\n";
  5. echo strtotime("+1 week"), "\n";
  6. echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
  7. echo strtotime("next Thursday"), "\n";
  8. echo strtotime("last Monday"), "\n";
  9. ?>
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.