Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Datetime-odejmowanie dwóch dat
Forum PHP.pl > Forum > PHP
pabloxj
Witam. Wiem, że jest dużo tematów tego rodzaju ale nigdzie nie mogę znaleźć rozwiązania.
Chodzi o to, że mam w bazie pole typu datetime czyli datę z czasem i chciałbym oblicz różnicę między tą datą a datą aktualną, a potem móc tą różnicę wyświetlać lub sprawdzać ile wynosi aby porównywać z jakimiś wartościami,np. czy różnica <=0. Próbowałem różnych opcji ale nic nie idzie.
Prosze o szybką pomoc
parzygnat
poczytaj trochę o:
date()
mktime()
time()
i napewno coś wymyślisz?

A jakiego typu masz to pole w bazie danych?
wookieb
Nie możesz poprostu przejrzec funkcji z manuala?
http://dev.mysql.com/doc/refman/5.1/en/dat...nction_datediff
Uwierz mi, że jest tam ta której potrzebujesz.
pabloxj
pole typu datetime
wookieb

TIMEDIFF I TIME_TO_SEC!
DATEDIFF podobnie
pabloxj
no właśnie próbuje i nic mi nie chodzi. a chciałbym uzyskać efekt w różnicy nie tylko dni ale nawet sekund ponieważ chciałem wykorzystać to do stopera, który odlicza czas do rozpoczęcia.
Fifi209
Cytat(pabloxj @ 17.05.2010, 21:38:22 ) *
no właśnie próbuje i nic mi nie chodzi. a chciałbym uzyskać efekt w różnicy nie tylko dni ale nawet sekund ponieważ chciałem wykorzystać to do stopera, który odlicza czas do rozpoczęcia.


To chyba potrafisz przeliczyć dni na sekundy...?
pabloxj
no tak, z tym że nie mogę obliczyc nawet dni:/
parzygnat
  1. $date = time() - strtotime($date_z_bazy);

$date wychodzi w sekundach
Fifi209
~wookieb podał Ci jedno rozwiązanie po stronie MySQL, możesz próbować po stronie PHP Datetime PHP
pabloxj
[PHP] pobierz, plaintext

1.
$date = time() - strtotime($date_z_bazy);

[PHP] pobierz, plaintext


fakt dostaje jakiś wynik i chyba jest w sekundach, ale jak to sformatować do normalnego czasu bo tutaj są jakieś astronomiczne wartości?
Fifi209
Cytat(pabloxj @ 17.05.2010, 22:47:24 ) *
[PHP] pobierz, plaintext

1.
$date = time() - strtotime($date_z_bazy);

[PHP] pobierz, plaintext


fakt dostaje jakiś wynik i chyba jest w sekundach, ale jak to sformatować do normalnego czasu bo tutaj są jakieś astronomiczne wartości?


Nie dziwić się tylko zaglądnąć do linku wookieb i mojego. ;]
suny79
Witam, przyłączę się do wątku dat.

Stosuję mktime() do obliczenia, która data jest wcześniejsza, a która późniejsza.

Dostaję taki błąd:

...on line 398: mktime() expects parameter 4 to be long, string given


$y1 = mktime(0, 0, 0, $month_od, $day_od, $year_od);


Pod $month jest 5.

Tu mam podjrzenie, że kompilator php czepia się, że to może jest string, a powinien być long. Przechowuję datę w bazie w postaci stringu: '2010-5-23', którą rozbijam sobie i analizuję. Co z tym zrobić by nie rzucało takimi błędami?

Dzięki za pomoc.

Włodek.

OK, pomogło zwykłe rzutowanie na INTa:

$month = (int)$month;



Pozdrawiam,
Włodek.
pabloxj
szczerze nie wiem czy to zmeczenie czy niewiedza, ale cały czas nie mam pomysłu na to. Próbuje korzystać z Waszych rad, ale cały czas coś nie idzie. Jeśli ktoś będzie mógł pomóc bardziej to bedę wdzięczny, ale oczywiście też dziękuje za porady rozwiązań.
croc
  1. SELECT time_to_sec(now()) - time_to_sec(pole_datetime) FROM tabela
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.