Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Operacje na datach
pkr
post 27.03.2010, 15:19:15
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 13.02.2008

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


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. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
tehaha
post 27.03.2010, 15:45:13
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


zamiast oddzielnie trzymać minuty, sekundy itd powinieneś całą datę z czasem trzymać w kolumnie typu DATETIME
Go to the top of the page
+Quote Post
pkr
post 27.03.2010, 15:57:41
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 13.02.2008

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


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?
Go to the top of the page
+Quote Post
tehaha
post 27.03.2010, 16:20:43
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


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ę

Ten post edytował tehaha 27.03.2010, 16:22:05
Go to the top of the page
+Quote Post
krowal
post 27.03.2010, 18:32:38
Post #5





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


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. ?>


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
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: 19.07.2025 - 18:43