Mam konkretną datę - 25.04.2023 godz. 11:50:00 - i odmierzam od niej czas. Chcę, aby by strona pokazywała również jaka to część roku do czterech miejsc po przecinku, ale z uwzględnieniem lat przestępnych.
Oto kod
function ObliczanieCzasuOdDaty($rokOdDaty,$miesiacOdDaty,$dzienOdDaty,$godzinaOdDaty,$minutaOdDaty,$sekundaOdDaty)
{
$miesiacOdDatyStara=(int)$miesiacOdDaty;
switch($miesiacOdDaty) {
case 1: $miesiacOdDaty="styczeń"; break;
case 2: $miesiacOdDaty="luty"; break;
case 3: $miesiacOdDaty="marzec"; break;
case 4: $miesiacOdDaty="kwiecień"; break;
case 5: $miesiacOdDaty="maj"; break;
case 6: $miesiacOdDaty="czerwiec"; break;
case 7: $miesiacOdDaty="lipiec"; break;
case 8: $miesiacOdDaty="sierpień"; break;
case 9: $miesiacOdDaty="wrzesień"; break;
case 10: $miesiacOdDaty="październik"; break;
case 11: $miesiacOdDaty="listopad"; break;
case 12: $miesiacOdDaty="grudzień"; break;
}
$rokOdDatyStara=(int)$rokOdDaty;
$dzienOdDatyStara=(int)$dzienOdDaty;
$godzinaOdDatyStara=(int)$godzinaOdDaty;
$minutaOdDatyStara=(int)$minutaOdDaty;
$sekundaOdDatyStara=(int)$sekundaOdDaty;
$timeStaraOdDaty=mktime($godzinaOdDatyStara,$minutaOdDatyStara,$sekundaOdDatyStara,$miesiacOdDatyStara,$dzienOdDatyStara,$rokOdDatyStara);
$timeNowaOdDaty=time();
$roznicaOdDaty=$timeNowaOdDaty-$timeStaraOdDaty;
$dniOdDaty=floor($roznicaOdDaty/(60*60*24));
$resztaOdDaty=$roznicaOdDaty-($dniOdDaty*60*60*24);
$godzinOdDaty=floor($resztaOdDaty/(60*60));
$resztaOdDaty-=($godzinOdDaty*60*60);
$minutOdDaty=floor($resztaOdDaty/60);
$sekundOdDaty=$resztaOdDaty-($minutOdDaty*60);
if(date('Y')%4==0)
$rok=366*24*60*60;
else if(date('Y')%4==1)
$rok=365.75*24*60*60;
else if(date('Y')%4==2)
$rok=365.5*24*60*60;
else
$rok=365.25*24*60*60;
if($dniOdDaty>=0&&$godzinOdDaty>=0&&$minutOdDaty>=0&&$sekundOdDaty>=0)
{
echo "dnia $dzienOdDaty $miesiacOdDaty $rokOdDaty godz. $godzinaOdDaty:$minutaOdDaty:$sekundaOdDaty,<br/>czyli $dniOdDaty dni, $godzinOdDaty godzin, $minutOdDaty minut, $sekundOdDaty sekund, czyli ".round($roznicaOdDaty/$rok,4)." roku temu.";
}
}
i wywołanie
ObliczanieCzasuOdDaty(2023,4,25,11,50,"00");
Coś czuję, że jest źle - co mam poprawić?