Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] unixtime / dni / unixtime /dni o_0
paw-e-l
post
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 23
Dołączył: 27.06.2009
Skąd: Jaworzno

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


z góry przepraszam że zawracam wam głowę takimi pierdołami ale na tę chwilę utknąłem
  1. $time = '1254697863'; // jakaś data w formacie unixowym
  2. echo 'unix: '.$time.' date: '.date('G:m j.m.Y', $time).'<br />';
  3. $day = floor($time/86400);
  4. echo 'day: '.$day.' unix from day: '.($day*86400).' date from day: '.date('G:m j.m.Y', $day*86400);


już tłumaczę o co tu chodzi. otóż w linii 3 obliczam numer dnia od początku ery unixowej. w linii 4 idę w drugą stronę, przeliczam ilość dni na sekundy a następnie wyświetlam datę. no i tutaj zonk (IMG:style_emoticons/default/sciana.gif) zamierzonym wynikiem była data taka sama jak na początku skryptu a wyszła przesunięta o dzień. wydedukowałem że przesunięcie tak naprawdę wynosi 2 godziny tylko skąd to się bierze i jak to rozwiązać (oczywiście bez dodawania tych 2 godzin)?

P.s. zważywszy na późną porę proszę o wyrozumiałość jeśli ten post nie ma sensu (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
paw-e-l
post
Post #2





Grupa: Zarejestrowani
Postów: 115
Pomógł: 23
Dołączył: 27.06.2009
Skąd: Jaworzno

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


Cytat
poza tym obliczasz:
date('G:m j.m.Y', $time)
a niżej date('G:m j.m.Y', $day*86400) i chcesz uzyskać ten sam wynik


nie pisałem że chcę uzyskać ten sam wynik tylko tę samą datę (IMG:style_emoticons/default/winksmiley.jpg) chyba zbiłem was trochę z tropu niepotrzebnie w date() podając 'G:m' (IMG:style_emoticons/default/tongue.gif)
chyba muszę w praktyczny sposób rozpisać o co mi chodziło z tymi dniami itd.
otóż mam statyczną metodę której zadaniem jest podawanie tego samego numeru dnia przez cały dzień od godziny 0:00 do 24:00
  1. class date extends date_Core {
  2. public static function day_number() {
  3. return floor((time()+7200)/86400); // 7200 to fix przesunięcia czasu
  4. }
  5. }
(tak piszę na kohanie (IMG:style_emoticons/default/winksmiley.jpg) )

problem polegał na tym że metoda zwracała ten sam numer dnia w godzinach 2:00 do 2:00 (to jest właśnie to przesunięcie 2h=7200h o którym pisałem).
po dodaniu tych 2h (time()+7200) otrzymuję ten sam numer dnia w prawidłowych godzinach od 0:00 do 24:00. mam nadzieję że teraz rozwiałem wątpliwości dlaczego użyłem floor() a nie round().

idąc dalej pokażę po co wogóle mi to wyliczanie numeru dnia.
  1. $this->db->query('UPDATE daily_views SET views=views+1 WHERE podstrona_id=123 AND day='.date::day_number());

to jest fragment kodu podstrony który jak można się domyślić inkrementuje ilość dziennych wyświetleń dla danej podstrony.
gdybym nie dodawał tych 2h w metodzie obliczającej dzień, ilość dobowych wyświetleń była by sumą wyświetleń między godzinami 2:00 i 2:00 a nie jak logika nakazuje między 0:00 i 24:00.

reszta kodu zaprezentowanego w pierwszym poście jest nieistotna gdyż służy tylko do przeliczania numeru dnia na normalną datę i to działa jak powinno.
Go to the top of the page
+Quote Post

Posty w temacie


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: 10.10.2025 - 20:48