Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]strtotime odejmowanie dni z timestamp
fr33d0m
post
Post #1





Grupa: Zarejestrowani
Postów: 132
Pomógł: 4
Dołączył: 22.10.2010

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


W bazie mam kolumne: `dd` timestamp
Na podstawie czasu z kolumny timestamp, chcę porównać datę z serwera i w zależności od wyniku wyświetlić odpowiedni komunikat. Problem jest z poprawnym odjęciem jednego dnia z kolumny timestamp bo wyświetla się, zupełnie inny wynik niż powinien...
  1. //$row['dd'] == 2012-07-05 22:55:04
  2.  
  3. $timeDB = mktime($row['dd']);
  4. $OdjetaData = date('Y-m-d H:i:s',strtotime('-1 day', $timeDB));
  5.  
  6. //$timeDB == 1348771328
  7. //$OdjetaData == 2012-09-26 20:42:08 / powinno byc: 2012-07-04 22:55:04


Ten post edytował fr33d0m 6.07.2012, 13:40:55
Go to the top of the page
+Quote Post
IProSoft
post
Post #2





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


  1. $timeDB = strtotime($row['dd']);
  2. echo date('Y-m-d H:i:s', strtotime('-1 day', $timeDB));
Go to the top of the page
+Quote Post
fr33d0m
post
Post #3





Grupa: Zarejestrowani
Postów: 132
Pomógł: 4
Dołączył: 22.10.2010

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


Ten sam efekt... a na pewno konstrukcja jest poprawna? może to wina mojego XAMPA?

edit: nie do końca ten sam efekt:
echo zwraca: 1969-12-31 01:00:00

Ten post edytował fr33d0m 6.07.2012, 12:39:48
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Czyli w bazie w owej kolumnie masz NULL lub ją pustą. Czemu? Bo w timestamp najniższa wartość ( czyli 0 ) to 1 stycznia 1970 roku. Jeśli od tego odejmiesz ten dzień to co otrzymasz? (IMG:style_emoticons/default/wink.gif) Ty lepiej sprawdź te dane, bo na bank wina jest nie po stronie skryptu. Może też być tak, że masz skopane coś z nazwą i PHP ustawia tam wartość pustą, potem konwertuje to do 0, a stąd do daty 1 stycznia 1970, oraz odejmuje 1 dzień.

EDIT: A czemu nie spróbujesz odjąć 1 dnia po stronie bazy (funkcje daty czasu w manualu zobacz sobie) i w php tylko porównać?
Go to the top of the page
+Quote Post
fr33d0m
post
Post #5





Grupa: Zarejestrowani
Postów: 132
Pomógł: 4
Dołączył: 22.10.2010

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


timestamp w bazie mam wypełnioną datą i czasem - istnieją dane (IMG:style_emoticons/default/smile.gif)
Wiem, że to dziwne... zanim zapytałem na forum przeglądałem google i pierwszą stronę wyników.
Hmm... skopane z nazwą? w sensie nadpisanie, którejś ze zmiennych? Też odpada.

Nie odejmuje z bazy 1)bo nie wiem jak, 2)ten sposób wydał mi się prostszy - jeśli nie uda się rozwiązać problemu to będę próbował odejmować z bazy.

Hmm... więc to wina XAMPA... już wcześniej kilka razy przy konkretnym INSERT wpuścił mi znak ' mimo, że filtrowałem.

Może jeszcze jakieś idee na rozwiązanie problemu?


Problem rozwiązany.
XAMPP Control Panel 2.3 [14. August, 2009] - działał błędnie - być może tylko moja indywidualna kompilacja, ponieważ mam ją zainstalowaną od ponad 2lat i sporo w php.ini grzebałem (chociaż to nie ma zbyt dużego znaczenia).
Przeinstalowałem na: XAMPP Control Panel Version 2.5 (16. March, 2011) i podany powyżej przykład pięknie hula. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 1.10.2025 - 09:23