Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mktime
Forum PHP.pl > Forum > Przedszkole
polibode
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
rogrog
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
polibode
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
rogrog
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.