Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]mktime
micha12344
post 5.02.2010, 16:24:34
Post #1





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 16.01.2009
Skąd: lubelskie

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


witam
otóż mam taki skrypt ktoremu najpierw daje przyszłą datę, date aktualna sam sobie bierze , na koncu zwraca roznice ale w dziwnej skladni...jak to zamienic na normalny czas aby pokazywal dni godziny sekundy?
oto moj skrypt::

$przyszla= 1267650294;
$date= mktime("Y-m-d H:i:s");
$dobra=$przyszla-$date;
echo $dobra;
Go to the top of the page
+Quote Post
Fifi209
post 5.02.2010, 16:32:51
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Zwraca liczbę sekund zapewne...

  1.  
  2. // Godziny
  3. $h = floor($dobra/3600);
  4. $dobra -= $h*3600;
  5.  
  6. // Minuty
  7. $m = floor($dobra/60);
  8. $dobra -= $m*60;
  9.  
  10. // Sekundy
  11. $dobra


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
micha12344
post 5.02.2010, 22:08:09
Post #3





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 16.01.2009
Skąd: lubelskie

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


ok wszystko dziala wielkie dzieki:)
CODE
$przyszla= 1267650294;
$date= mktime("Y-m-d H:i:s");
$dobra=$przyszla-$date;


if(isset($dobra))

{

if($dobra/89400 >= 1)

{

echo intval($dobra/86400)." dni";

}

else if($dobra/3600 >= 1)

{

echo intval($dobra/3600)." godz.";

}

else if($dobra/60 >= 1)

{

echo intval($dobra/60)." min.";

}

else if($dobra >= 1 AND $dobra < 60)

{

echo "poniżej minuty";

}

else if($dobra <= 0);

a to mi jeszcze wpadlo do glowy przez kolegę i proszę pomózcie mi to udoskonalic....

Ten post edytował micha12344 5.02.2010, 22:29:27
Go to the top of the page
+Quote Post
Virus_PL
post 6.02.2010, 10:38:13
Post #4





Grupa: Zarejestrowani
Postów: 5
Pomógł: 1
Dołączył: 6.02.2010
Skąd: Toruń

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


Po pierwsze, uporządkuj składnię. Klamry nie potrzebują po wolnej linii nad sobą i pod sobą, od tego są tabulatory. Niech zgadnę, piszesz w Notepadzie?
Po drugie, mktime() nie działa w ten sposób. Od tego jest funkcja strtotime(). Składnia mktime() poniżej w moim kawałku kodu.
Po trzecie, nie ma sensu ciągle dzielić sekund, skoro mamy funkcję date(). Co prawda z zwraca dzień w roku od 0 do 365, czyli nie będzie działało gdy dni jest więcej niż 365, ale przypuszczam że aż tyle nie będzie potrzebne. W ostateczności można wtedy zrobić floor($dobra / 86400).
A oto mój kod:

  1. date_default_timezone_set('GMT');
  2. $przyszla = mktime(21, 4, 54, 3, 3, 2010); // godzina, minuta, sekunda, miesiac, dzien, rok
  3. $date = strtotime(date("Y-m-d H:i:s"));
  4. $dobra = $przyszla - $date;
  5. $dni = date('z', $dobra);
  6. $godziny = date('H', $dobra);
  7. $minuty = date('i', $dobra);
  8. $sekundy = date('s', $dobra);
  9. echo "$dni dni, $godziny godzin, $minuty minut, $sekundy sekund";
  10. if ($dobra < 0) {
  11. // przeszlosc
  12. } else {
  13. if ($dni) {
  14. // wiecej niz jeden dzien
  15. } else {
  16. if ($godziny) {
  17. // wiecej niz godzina
  18. } else {
  19. if ($minuty) {
  20. // wiecej niz minuta
  21. } else {
  22. // mniej niz minuta
  23. }
  24. }
  25. }
  26. }


Zdaję sobie sprawę, że trzykrotnie zagnieżdżony if nie jest najpiękniejszym kodem na świecie, ale działa jak trzeba.

Ten post edytował Virus_PL 6.02.2010, 10:42:29
Go to the top of the page
+Quote Post
Fifi209
post 6.02.2010, 10:42:25
Post #5





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(micha12344 @ 5.02.2010, 22:08:09 ) *
a to mi jeszcze wpadlo do glowy przez kolegę i proszę pomózcie mi to udoskonalic....

Wystarczy, że w moim kodzie przed:
  1. // Godziny
  2. $h = floor($dobra/3600);
  3. $dobra -= $h*3600;


Dasz:
  1. // Dni
  2. $days = floor($dobra/3600*24);
  3. $dobra -= $days*3600*24;


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
micha12344
post 6.02.2010, 15:24:32
Post #6





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 16.01.2009
Skąd: lubelskie

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


dzieki wszystkim oba przyklady są bardzo dobre. czarodziej.gif
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 Wersja Lo-Fi Aktualny czas: 14.06.2025 - 17:30