Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] date() powyżej 30 dni, gmt?
shpaque
post
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


witam, mam problem z datami, ponieważ powyżej 30 dni zaczyna mi pokazywać ułamek i to zwykle taki sam, po liczbie całkowitej dni: .041666666667 - co trzeba zrobić
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
sazian
post
Post #2





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

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


pokaż kod
Go to the top of the page
+Quote Post
shpaque
post
Post #3





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


  1. <?
  2. $dateins = array();
  3. $dateouts = array();
  4. $titles = array();
  5. $citys = array();
  6. $streets = array();
  7. $poolnames = array();
  8. $poollengths = array();
  9. $results = array();
  10. $rozpoczecies = array();
  11. $zakonczenies = array();
  12. $newdateins = array();
  13. $i = 9;
  14. $dzisiaj = strtotime(date('Y-m-d'));
  15. $database = './db/zawody.db';
  16. $items = file($database);
  17.  
  18. foreach($items as $line)
  19. {
  20. list($datein, $dateout, $title, $city, $street, $poolname, $poollength, $result) = explode('|', trim($line));
  21. $rozpoczecie = ($dzisiaj - strtotime($datein));
  22. $zakonczenie = ($dzisiaj - strtotime($dateout));
  23. $newdatein = date('Y-m-d', ($dzisiaj - $rozpoczecie));
  24. if ($rozpoczecie > 0)
  25. {
  26. $dateins[] = $datein;
  27. $dateouts[] = $dateout;
  28. $titles[] = $title;
  29. $citys[] = $city;
  30. $streets[] = $street;
  31. $poolnames[] = $poolname;
  32. $poollengths[] = $poollength;
  33. $results[] = $result;
  34.  
  35. $rozpoczecies[] = $rozpoczecie / 86400;
  36. $zakonczenies[] = $zakonczenie / 86400;
  37. $newdateins[] = $newdatein;
  38. }
  39. }
  40. array_multisort ($newdateins, SORT_DESC, $dateins, $dateouts, $titles, $citys, $streets, $poolnames, $poollengths, $results, $rozpoczecies, $zakonczenies);
  41.  
  42. list($year, $month, $day) = split('[/.-]', $dateins[$i]);
  43. if ($month == '01') {$month2 = 'STY';}
  44. else if ($month == '02') {$month2 = 'LUT';}
  45. else if ($month == '03') {$month2 = 'MAR';}
  46. else if ($month == '04') {$month2 = 'KWI';}
  47. else if ($month == '05') {$month2 = 'MAJ';}
  48. else if ($month == '06') {$month2 = 'CZE';}
  49. else if ($month == '07') {$month2 = 'LIP';}
  50. else if ($month == '08') {$month2 = 'SIE';}
  51. else if ($month == '09') {$month2 = 'WRZ';}
  52. else if ($month == '10') {$month2 = 'PAŹ';}
  53. else if ($month == '11') {$month2 = 'LIS';}
  54. else if ($month == '12') {$month2 = 'GRU';}
  55. else {$month2 = '';}
  56. echo "$day $month2 $year";
  57. ?>
  58. </span>
  59. <span style="color:#696969;font-size:10px;font-family:'Ubuntu Condensed';font-weight:normal;font-style:normal;text-decoration:none">
  60. <?
  61. $dzien = 'dni';
  62. if ($rozpoczecies[$i] == 1)
  63. {
  64. $dzien = 'dzień';
  65. }
  66. echo "<br>$rozpoczecies[$i] $dzien temu";
  67. ?>


czytałem coś o "floor", ale w ogóle dziwne jest to, że jak mam datę dzisiaj 2013-12-09 i wyświetla mi datę 2013-10-08 - oblicza, że to 16047 dni temu...
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. $d1 = '2013-12-09';
  2. $d2 = '2013-10-08';
  3.  
  4. $days = (strtotime($d1)-strtotime($d2)) / 86400;
  5. echo $days;

Dake poprawny wynik 62. Jesli ty dostajesz 16047 znaczy ze operujesz na innych danych niz ci sie wydaje. Juz ci zdaje sie pisalem bys sprawdzal dokladnie dane na jakich dzialasz......

var_dump()


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
shpaque
post
Post #5





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


no dobrze, ale dlaczego w takim razie różnica do 30 lub 31 dni jest wyświetlana poprawnie? Tu chyba nie o to chodzi...

tu chodzi bardziej o to
Cytat
Różnica między datami w dniach
Doba (dzień) to 24 godziny * 60 minut * 60 sekund co zapamiętamy w zmiennej $liczba_sekund_w_dniu. Zatem różnice między datami $liczba_sekund_miedzy_datami musimy podzielić przez $liczba_sekund_w_dniu by mieć liczbę dni między datami. Gdyby pojawił się ułamek w wyniku to funkcja PHP Floor dodatkowo zaokrągla nam otrzymaną liczbę dni do dołu. Zatem wyświetli się nam informacja, że do zaćmienia słońca pozostało 5852 dni zamiast 5852,72 dni.
$liczba_sekund_w_dniu = 60 * 60 * 24;
$liczba_dni_miedzy_datami =
Floor ($liczba_sekund_miedzy_datami/$liczba_sekund_w_dniu);


Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




podalem ci kod, ze masz poprawną roznice nawet 60 dni...
przy zmianie czas letni/zimowy tak, wyjdzie ulamek. ale tu wystarczy albo zaokraglicalbo dodawac GMT do strtotime.

ale to nie ma zadnego zwiazku z tym, ze tobie zamiast 62 wyswietla sie kilkanascie tysiecy


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
shpaque
post
Post #7





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


ale kod jest jeden - nie zmienia się w międzyczasie...



smile.gif już wiem wszystko...

chodzi o to, że pierwsza data (ta 2013-10-08) jest pierwszym wpisem w pierwszej linijce w pliku UTF więc dochodzi BOM - i tu robi się bajzel...

czyli wystarczy albo gmdate albo floor?
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
chodzi o to, że pierwsza data (ta 2013-10-08) jest pierwszym wpisem w pierwszej linijce w pliku UTF więc dochodzi BOM - i tu robi się bajzel...
i dlatego wlasnie miales zrobic VAR_DUMP()..... kurcze, nie bez powodu ci ludzie o tym pisza :/

Cytat
zyli wystarczy albo gmdate albo floor?
napisalem w poprzednim poscie co ma byc. potrzebujesz milion potwierdzen?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
shpaque
post
Post #9





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


widzę, że wystarczy że w temacie dalej zgasiłem kolegę Pytona kodem, do jakiego nie mógł dojść - i stałem się wrogiem publicznym nr 1..?

Nie nie trzeba - przeciez wcale nie musisz odpisywać skoro już sobie rozwiązałem problem...
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




LOL x 1000
Ty w ogole nie ogarniasz co sie wokol ciebie dzieje.. Kolega python podawal poprawne rozwiazanie, takie jak bylo w manualu. Ale ty tego nie ogarniales, bo nie chcialo ci sie chwile pomyslec. Potem "wpadles" na rzekome wlasne rozwiazanie, ktore rowniez wykorzystywalo array_multisort tylko ciut inaczej. Obie metody byly opisane w manualu i obie byly poprawne.

Teraz tutaj to samo: podalem ci, ze masz zle wartosci dat niz ci sie wydaje i ze masz uzyc var_dump by to sprawdzic. na to nagle ty ze sam znalazles rozwiazanie, bo pierwsza data byla z BOM....czyli defacto miala inna wartosc niz myslales, co ja na samym poczatku od razu ci napisalem.....LOL.

Skoro wiec tak "sam" wszystko rozwiazujesz to po co tu w ogole przychodzisz?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
shpaque
post
Post #11





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


bo czasami mi tutaj ktos pomogl - tak jak Ty dzisiaj - zal mi tylko czasem jak wracajac do tamtego tematu - ze stracilem na glupi kawalek skryptu 2,5 tyg - ktory ktos moglby mi podsunac w 5 minut a nie kopiowac z manuala - to oznacza ze cale g. zna sie na php tylko zna ctrl+c i ctrl+v - osoba ktora zna jezyk od razu podsunela by mi wskazowki ze trzeba wywalić [$count] i dac pusty array [], ze trzeba to i tamto zrobic... Ale po co to juz rozgrzebywac.

Generalnie chodzi o to, ze zalozenie tego forum jest aby ludzie pomagali - tak? czyli wyjasniali takim tlumokom jak ja co gdzie moze byc zle, bo jesli chodzi o manual i chcialbym wiedziec co robi zadal bym pytanie: czego szukac w manualu zeby zrobic to to to i to, a nie zadawal pytanie z kodem: co trzebna tutaj zrobic zeby zadzialo - sugeruje to ze chce udoskonalic moj kod, a nie zamienic na example z manuala. Tyle w temacie...

Ale tak jak mowia - ze stereotypowym informatykiem porozumiesz sie tylko metodą zero-jedynkową...
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Ale po co to juz rozgrzebywac.

Sam ni z gruszki ni z pietruszki wyjezdzasz z durnym tekstem, ktory nie ma nic wspolnego z tym tematem:
Cytat
widzę, że wystarczy że w temacie dalej zgasiłem kolegę Pytona kodem, do jakiego nie mógł dojść - i stałem się wrogiem publicznym nr 1..?
i na dodatek cos sobie ubzdurales jak to kogos zgasiles....

po ra z kolejny powtrzam: dostales od pythona poprawny kod. dal ci gotowca. skopiowal z manuala i dostosowal do twojego konkretnego kodu. miales wszystko zrobione.

przestan wiec gadać jak to zgasiles pythona pokazujac mu inne rozwiazanie ktore "dziala" bo to nie ty go zgasiles... przyjmij to wkoncu do wiadomosci bo ta twoja gatka jest juz nudna


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 17:07