Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Funkcja zwracająca różnicę procentową - GODZINA DNIA
Forum PHP.pl > Forum > Przedszkole
designez
Hej wydaje mi się to bardziej matematyczne zadanie ale proszę o wskazówki jak to najlepiej rozwiązać.
Mam taką oto klasę której zadaniem jest zwracanie wartości od 0 do 180 co jest wartością jaką potrzebuję do "Półkolistego paska postępu" takiego jak tutaj.
Poniższa klasa nie działa prawidłowo ponieważ jest już przygotowana pod wartości procentowe a dziś np. dzień trwa 8 godzin co nigdy nie zwróci w obecnym stanie pełnej wartości "180"




Mam już wszystko brakuje mi tylko mechanizmu który oblicza wartość procentową aktualnej godziny do ilości godzin od wschodu do zachodu.
Długość dnia zimą i latem jest różna więc nei może być to stała.

Długość dnia 8 godzin i kombinuje jak sprawdzić ile procent dnia stanowi godzina 11 przy wchodzie 8 i zachodzie 16?

  1. function WschodZachodRoznica () {
  2. $godzina = date('h');
  3. $_wschod = ''.date_sunrise(time(), SUNFUNCS_RET_STRING, 54.06, 19.65, 90, 1);
  4. $_zachod = ''.date_sunset(time(), SUNFUNCS_RET_STRING, 54.06, 19.65, 90, 1);
  5. $_dlugosc_dnia = $_zachod - $_wschod;
  6.  
  7. if ($godzina>$_wschod) {
  8. if (($godzina-$_wschod)==1) {
  9. return "18";
  10. }
  11. if (($godzina-$_wschod)==2) {
  12. return "36";
  13. }
  14. if (($godzina-$_wschod)==3) {
  15. return "54";
  16. }
  17. if (($godzina-$_wschod)==4) {
  18. return "72";
  19. }
  20. if (($godzina-$_wschod)==5) {
  21. return "90";
  22. }
  23. if (($godzina-$_wschod)==6) {
  24. return "108";
  25. }
  26. if (($godzina-$_wschod)==7) {
  27. return "126";
  28. }
  29. if (($godzina-$_wschod)==8) {
  30. return "144";
  31. }
  32. if (($godzina-$_wschod)==9) {
  33. return "162";
  34. }
  35. if (($godzina-$_wschod)==10) {
  36. return "180";
  37. }
  38. } else {
  39. return "0";
  40.  
  41. }
  42.  
  43. }
nospor
Przekombinowales...

skoro znasz stark i koniec, to liczysz roznicy
$roznica = $koniec - $start; //w minutach rzecz jasna

Teraz masz jakas godzine i liczesz roznice dla niej
$roznica2 = $godzina - $start; //w minuach rzecz jasna

I teraz procent

$procent = $roznica2/roznica*100;
trueblue
Temat: PHP Wzor na funkcje

a*x+b=y

/a*8+b=0
\a*16+b=180
designez
Dzięki za podpowiedzi rozwiązałem to tak jak sugerujecie. Dla testów podawałem sobie godziny jako wartości w zmiennych.

  1. function WschodZachodRoznica () {
  2. /*$godzina = date('H');
  3. $_wschod = ''.date_sunrise(time(), SUNFUNCS_RET_STRING, 54.06, 19.65, 90, 1);
  4. $_zachod = ''.date_sunset(time(), SUNFUNCS_RET_STRING, 54.06, 19.65, 90, 1);
  5. $_dlugosc_dnia = $_zachod - $_wschod;
  6.  
  7. */
  8. $godzina_t = 17*60;
  9. $_wschod = 8*60;
  10. $_zachod = 18*60;
  11. $roznica = $_zachod - $_wschod;
  12. $roznica2 = $godzina_t - $_wschod;
  13. $procent = $roznica2/$roznica*100;
  14. $_int_procent = (int)$procent;
  15.  
  16. //$_css_output = (int)$procent*1.8;
  17. $_css_output = $procent*1.8;
  18. if ($godzina_t>$_wschod) {
  19. if ($godzina_t<=$_zachod) {
  20. return $_css_output;
  21. } else {
  22. return 180;
  23. }
  24. } else {
  25. return 0;
  26. }
  27.  
  28. }
trueblue
Mnożyć przez 60 nie musisz, bo to i tak stała, która nie zmienia wyniku. Również zamiast 100 i 1.8, można pomnożyć przez 180.

kat=(180/(Z-W))*G-180.
Zamiast warunków na wschód i zachód można nałożyć warunki na wyliczoną wartość kąta.
rybosom
a propos date_sunset

  1. <?php
  2. // Współrzędne Warszawy w stopniach dziesiętnych
  3. // szerokość: 52.2297700°
  4. // długość: 21.0117800°
  5. // zenith: ~= 90
  6. // offset: +2 GMT
  7.  
  8. echo date_sunset(time(), SUNFUNCS_RET_STRING, 52.2297700, 21.0117800, 90, 2);
  9. ?>

zwraca dziś tj 26 maja 2019 godzinę 20:35 podczas gdy Google twierdzi że zachód słońca będzie o 20:40



no i pytanie, skąd ta różnica?
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.