Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> mktime, mktime
polibode
post
Post #1





Grupa: Zarejestrowani
Postów: 232
Pomógł: 1
Dołączył: 11.03.2003

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


Witam , stworzylem skrytp , ktory korzysta z dat wygenerowanych w php na potrzeby wyszukiwania informacji w bazie danych MS SQL

Testuję go i patrzę , że funkcja mktime na przełomie roku np 12.12.2004 i np 12.02.2005 się wykrzacza.
Kod jest nastepujący

Oblicze ilosc dni od , do ;
Prosze popatrzec i przetestować

  1. <?php
  2.  
  3. $s_ts = mktime(0,0,0,$miesiacod,$dzienod,$rokod);
  4. $e_ts = mktime(0,0,0,$miesiacdo,$dziendo,$rokdo);
  5. $s_day = date(&#092;"z\",$s_ts);
  6. $e_day = date(&#092;"z\",$e_ts);
  7. $diff = $e_day - $s_day;
  8.  
  9. ?>

Popatrzcie i pomozcie , jak obliczyc ilosc dni od , do , jesli to jest przelom 2004, 2005 roku no i oczywiscie dozywotnio;) bo tak ma to dzialac.
I wyswietlanie tych dat . Mam to w formie tabeli i rozne dane na dany dzien
  1. <?php
  2.  
  3. $count=0;
  4. for($i=$diff; $i>-1; $i--)
  5. {
  6.  $t = mktime (0,0,0,$miesiacdo,$dziendo-$i,$rokdo);
  7.  $czas_inny[$count]= strftime (&#092;"20%y\", $t).'.'.strftime (\"%m\", $t).'.'.strftime (\"%d\", $t).'.'.strftime (\"%a\", $t);
  8.  $czas[$count]= strftime (&#092;"20%y\", $t).strftime (\"%m\", $t).strftime (\"%d\", $t);
  9.  $count++;
  10. } 
  11.  
  12. ?>

dzieki
Go to the top of the page
+Quote Post
rogrog
post
Post #2





Grupa: Zarejestrowani
Postów: 602
Pomógł: 1
Dołączył: 3.04.2004
Skąd: Trójmiasto (Gdańsk)

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


było wiele razy. Masz już dane w wersji znacznika unixowego (czyli wynik działania mktime)

znaczniki unixowe jak pewnie wiesz (a jak nie wiesz przeczytaj w manualu komentarz do mktime i date) są zapisem daty w sekundach od określonego momentu (resztę pomińmy)

no więc odejmij od siebie znaczniki, dostaniesz różnicę w sekundach, teraz ją zaokrąglij do dni i już smile.gif


--------------------
Go to the top of the page
+Quote Post
polibode
post
Post #3





Grupa: Zarejestrowani
Postów: 232
Pomógł: 1
Dołączył: 11.03.2003

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


HM,
wydaje mi sie , ze odjałem znaczniki , a jak robię odwrotnie , najpierw konwertuje mktime według dat a pozniej odejmę , to jest to samo

Pozatym ja chcę wygenerować wszystkie daty (widać to z dolnej tabeli) na przełomie np roku 2004.12.12 - do np 2005.1.10

i umieścić w tabeli.

Z twojego opisu niewiele wynika, jesli odpowiadasz to prosze konkretnie
Go to the top of the page
+Quote Post
rogrog
post
Post #4





Grupa: Zarejestrowani
Postów: 602
Pomógł: 1
Dołączył: 3.04.2004
Skąd: Trójmiasto (Gdańsk)

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


podałem Ci sposób:
1. odejmujesz znaczniki - dostajesz różnicę w sekundach
2. przeliczasz różnicę w sekundach na różnicę w dniach

natomiast Ty w swoim skrypcie odejmujesz numery dnia w roku, co powoduje błędy na przełomach lat

moja propozycja dla pierwszego skryptu
  1. <?php
  2.  
  3. $s_ts = mktime( 0, 0, 0, $miesiacod, $dzienod, $rokod );
  4. $e_ts = mktime( 0, 0, 0, $miesiacdo, $dziendo, $rokdo );
  5.  
  6. $diff = abs( $e_ts - $s_ts ); //różnica w sekundach
  7.  
  8. $diff_days = ceil( $diff / (24*60*60) ); // wynik dzielenia różnicy przez ilość sekund w dniu, zaokrągla w górę
  9.  
  10. ?>



no a drugie pytanie... coś ci nie działa?? nie wiem


--------------------
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 - 23:49