![]() |
![]() ![]() |
![]() |
![]()
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
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) |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 23 Dołączył: 27.06.2009 Skąd: Jaworzno Ostrzeżenie: (0%) ![]() ![]() |
tylko że potrzebuje numeru dnia jako integer bo zapisuje do bazy jako unikalny identyfikator dnia (musi być integer), a później z powrotem zamieniam na date
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
Po cholerę tam mnożysz a tu dzielisz? Robisz 2x jedno i to samo?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 429 Pomógł: 195 Dołączył: 6.10.2008 Skąd: Kraków/Tomaszów Lubelski Ostrzeżenie: (0%) ![]() ![]() |
zamiast
$day = floor($time/86400); daj $day=round($time/8640, 0); choc rozwiazanie sadistic_son wydaje sie lepsze ;p Ten post edytował MateuszScirka 5.10.2009, 21:22:03 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 23 Dołączył: 27.06.2009 Skąd: Jaworzno Ostrzeżenie: (0%) ![]() ![]() |
Po cholerę tam mnożysz a tu dzielisz? Robisz 2x jedno i to samo? otóż są to 2 fragmenty kodu
źródłem tego przesunięcia okazała się jednak pierwsza część kodu (unixtime na dzień). rozwiązałem to tak działa tak jak powinno choć pewnie nigdy się nie dowiem dlaczego muszę dodawać 7200s żeby było ok. @up, round() nie wchodzi w gre gdyż obliczanie numeru dnia w ten sposób w godzinach południowych dawałoby dzień następny (IMG:style_emoticons/default/winksmiley.jpg) Ten post edytował paw-e-l 5.10.2009, 22:41:29 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
źródłem tego przesunięcia okazała się jednak pierwsza część kodu (unixtime na dzień). rozwiązałem to tak działa tak jak powinno choć pewnie nigdy się nie dowiem dlaczego muszę dodawać 7200s żeby było ok. Cytat(PHP_manual_-_pl.php.net) Cytat float floor ( float $value ) Returns the next lowest integer value by rounding down value if necessary. chciałeś liczby całkowite to masz ale bez tego co jest po przecinku (IMG:style_emoticons/default/winksmiley.jpg) - no, a, że dopiero od tej wartości chcesz wrócić do początkowej to brakuje Ci tego po przecinku i: 2*60*60 [2h * 60min * 60s] = 7200s (IMG:style_emoticons/default/winksmiley.jpg) [do całości - czyli reszty masz 86400-7200=79200s które floor wyrzuci (IMG:style_emoticons/default/winksmiley.jpg) ] - i w sumie na to przybliżenie to jest zależne od pory dnia (IMG:style_emoticons/default/winksmiley.jpg) Cytat( @ 5.10.2009, 23:31:16 ) @up, round() nie wchodzi w gre gdyż obliczanie numeru dnia w ten sposób w godzinach południowych dawałoby dzień następny odpowiedź na jedno z pytań już dostałeś, trochu znowu już wypiłem więc nie chce mi się analizować przykładu ale to są podstawowe równania matematyczne - i tak to traktuj a dopiero potem do tego dobieraj funkcje lub w razie potrzeby pisz własne (IMG:style_emoticons/default/winksmiley.jpg) ps. a po co próbujesz potem $day*86400 skoro chcesz uzyskać wartość $time?? - błąd Ci wskazałem już ale teraz pytanie po co niepotrzebnie obliczasz to co już masz w jednej ze zmiennych?? 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 to może obliczył byś to raz i wrzucił to do jakiejś zmiennej a potem wyświetlał jej wartość?? - tak wiem - wyniki mogą być różne przez to przybliżenie floor - choć tak wiem teraz to "naprawiłeś" [dla mnie to nie jest naprawa problemu - trzeba problem zrozumieć a nie tylko łatać dziury a potem dziurę na dziurze (IMG:style_emoticons/default/winksmiley.jpg) ] okrężną drogą dodając do całości - floor działa tak że jak masz 1,9 to otrzymasz 1 (IMG:style_emoticons/default/winksmiley.jpg) Ten post edytował zegarek84 5.10.2009, 23:17:15 |
|
|
![]()
Post
#8
|
|
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 (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.
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 18:24 |