Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] time
Forum PHP.pl > Forum > Przedszkole
mtskilla
Witam

Mam problem.
Do bazy dodaje date w za pomocą czas TIMESTAMP. ( dodaje mi cos takiego (20100603021521))
Chciałbym zrobic cos co porównuje czas aktualny oraz czas dodany do bazy i np. wywalało mi nieaktualne rekordy z bazy.
np. po 24 godzinach od dodania.

problem w tym, ze jak pobieram sobie z bazy czas i odejmuje go od czasu aktualnego mam czas w sekundach.
jest jakas funkcja ktora pobierze czas odejmie go od czasu aktualnego i wyswietli mi czas normalnie?

jak to zrobic z czasem na przełomie dni?
(jak dodam czas do tabeli o 23 i o 1 bede chcial odjąc to mi wyjdzie na minusie..)

jak to zakombinowac?

Czy mógłby mnie ktoś nakierowac.
sadistic_son
Najelepiej uzywaj czasu w formacie Unixa:
  1. $teraz=time();
. Dowolny string zawierajacy w sobie date/czas (nawet cos typu: "first monday next month") mozesz zamienic sobie na czas unixowy funckja strtotime. Tak wiec aby obliczyc roznice dat np. aby dowiedziec sie czy cos jest starsze niz 24h robisz tak:
  1. $teraz=time();
  2. $do_sprawdzenia='2010 06 03 2:23:14';
  3. $do_sprawdzenia=strtotime($do_sprawdzenia);
  4. //24h = 86400 sekund
  5. if($teraz-$do_sprawdzenia>86400){
  6. echo 'dane starsze niz 24h';
  7. }else{
  8. echo' dane nowsze niz 24h';
  9. }
  10.  
  11. //obliczenie roznicy czasow
  12. $roznica=$teraz-$do_sprawdzenia;
  13. //zamiana $roznica na godziny
  14. $roznica=$roznica/3600;
  15. //na minuty
  16. $roznica=$roznica/60;
  17. //na dni
  18. $roznica=$roznica/84600;
  19. //ITP. ITD.
#luq
A dlaczego nie zrobić tego już na warstwie bazy?

dates
id | date

  1. SELECT *
  2. FROM dates
  3. WHERE TIMESTAMPDIFF( HOUR , NOW( ) , date ) <= -24


Poza tym, tak jak mówi @sadistic_son, przechowywanie czasu jako unix timestamp jest jak najbardziej okej i ułatwia operacje na nim
mtskilla
dzieki wielkie. teraz dodaje czas w funkcji unix timestamp i wszystko gra smile.gif

mam jeszcze jedno pytanie tak zeby nie zakladac nowego tematu.

mam petle

  1. for ($a=1; $w = mysql_fetch_array($result); ++$a) {
  2.  
  3. $cena=strip_tags($w['cena']);
  4. $suma=$cena*$ilosc;
  5. $suma=number_format($suma, 2);
  6. }


jak zrobic łączną sumę tych wszystkich sum?

bastard13
  1. for ($a=1; $w = mysql_fetch_array($result); ++$a) {
  2. $cena=strip_tags($w['cena']);
  3. $suma+=number_format($cena*$ilosc, 2);
  4. }
#luq
A innej pętli niż for nie znamy? Po co ta a zmienna $a?
Daimos
Cytat(sadistic_son @ 3.06.2010, 08:22:43 ) *
Najelepiej uzywaj czasu w formacie Unixa...

nigdy w zyciu, masz od tego formaty daty w bazie winksmiley.jpg a jak koniecznie chcesz pozniej sekundy, co tutaj jest zupelnie niepotrzebne, bo mozna zwyczajnie dzialac na datach w bazie
to:
UNIX_TIMESTAMP
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.