Dates[$n]; } private function trunc($x) { if ($x > 0.0) return floor($x); else return ceil($x); } private function JJDATEJ() { $z1 = $this->JJD + 0.5; $z = $this->trunc($z1); $a = $z; $b = $a + 1524; $c = $this->trunc(($b - 122.1) / 365.25); $d = $this->trunc(365.25 * $c); $e = $this->trunc(($b - $d) / 30.6001); $this->Day = $this->trunc($b - $d - $this->trunc(30.6001 * $e)); if ($e < 13.5) $this->Month = $this->trunc($e - 1); else $this->Month = $this->trunc($e - 13); if ($this->Month >= 3) $this->Year = $this->trunc($c - 4716); else $this->Year = $this->trunc($c - 4715); } private function JJDATE() { $z1 = $this->JJD + 0.5; $z = $this->trunc($z1); if ($z < 2299161) $a = $z; else { $alpha = $this->trunc(($z - 1867216.25) / 36524.25); $a = $z + 1 + $alpha - $this->trunc($alpha / 4); } $b = $a + 1524; $c = $this->trunc(($b - 122.1) / 365.25); $d = $this->trunc(365.25 * $c); $e = $this->trunc(($b - $d) / 30.6001); $this->Day = $this->trunc($b - $d - $this->trunc(30.6001 * $e)); if ($e < 13.5) $this->Month = $this->trunc($e - 1); else $this->Month = $this->trunc($e - 13); if ($this->Month >= 3) $this->Year = $this->trunc($c - 4716); else $this->Year = $this->trunc($c - 4715); } private function conv($n) { $fdj = ($this->JJD + 0.5E0) - floor($this->JJD + 0.5E0); $hh = floor($fdj * 24); $fdj -= $hh / 24.0; $mm = floor($fdj * 1440); $tz = date_default_timezone_get(); date_default_timezone_set('UTC'); $this->Dates[$n] = mktime($hh, $mm, 0, $this->Month, $this->Day, $this->Year); date_default_timezone_set($tz); } public function calc($yy) { $code1 = $yy; $nline = 1; $k = $yy - 2000 - 1; for ($n = 0; $n < 8; $n++) { $nn = $n % 4; $dk = $k + 0.25E0 * $n; $t = 0.21451814e0 + 0.99997862442e0 * $dk + 0.00642125e0 * sin(1.580244e0 + 0.0001621008e0 * $dk) + 0.00310650e0 * sin(4.143931e0 + 6.2829005032e0 * $dk) + 0.00190024e0 * sin(5.604775e0 + 6.2829478479e0 * $dk) + 0.00178801e0 * sin(3.987335e0 + 6.2828291282e0 * $dk) + 0.00004981e0 * sin(1.507976e0 + 6.2831099520e0 * $dk) + 0.00006264e0 * sin(5.723365e0 + 6.2830626030e0 * $dk) + 0.00006262e0 * sin(5.702396e0 + 6.2827383999e0 * $dk) + 0.00003833e0 * sin(7.166906e0 + 6.2827857489e0 * $dk) + 0.00003616e0 * sin(5.581750e0 + 6.2829912245e0 * $dk) + 0.00003597e0 * sin(5.591081e0 + 6.2826670315e0 * $dk) + 0.00003744e0 * sin(4.3918e0 + 12.56578830e0 * $dk) + 0.00001827e0 * sin(8.3129e0 + 12.56582984e0 * $dk) + 0.00003482e0 * sin(8.1219e0 + 12.56572963e0 * $dk) - 0.00001327e0 * sin(-2.1076e0 + 0.33756278e0 * $dk) - 0.00000557e0 * sin(5.549e0 + 5.7532620e0 * $dk) + 0.00000537e0 * sin(1.255e0 + 0.0033930e0 * $dk) + 0.00000486e0 * sin(19.268e0 + 77.7121103e0 * $dk) - 0.00000426e0 * sin(7.675e0 + 7.8602511e0 * $dk) - 0.00000385e0 * sin(2.911e0 + 0.0005412e0 * $dk) - 0.00000372e0 * sin(2.266e0 + 3.9301258e0 * $dk) - 0.00000210e0 * sin(4.785e0 + 11.5065238e0 * $dk) + 0.00000190e0 * sin(6.158e0 + 1.5774000e0 * $dk) + 0.00000204e0 * sin(0.582e0 + 0.5296557e0 * $dk) - 0.00000157e0 * sin(1.782e0 + 5.8848012e0 * $dk) + 0.00000137e0 * sin(-4.265e0 + 0.3980615e0 * $dk) - 0.00000124e0 * sin(3.871e0 + 5.2236573e0 * $dk) + 0.00000119e0 * sin(2.145e0 + 5.5075293e0 * $dk) + 0.00000144e0 * sin(0.476e0 + 0.0261074e0 * $dk) + 0.00000038e0 * sin(6.45e0 + 18.848689e0 * $dk) + 0.00000078e0 * sin(2.80e0 + 0.775638e0 * $dk) - 0.00000051e0 * sin(3.67e0 + 11.790375e0 * $dk) + 0.00000045e0 * sin(-5.79e0 + 0.796122e0 * $dk) + 0.00000024e0 * sin(5.61e0 + 0.213214e0 * $dk) + 0.00000043e0 * sin(7.39e0 + 10.976868e0 * $dk) - 0.00000038e0 * sin(3.10e0 + 5.486739e0 * $dk) - 0.00000033e0 * sin(0.64e0 + 2.544339e0 * $dk) + 0.00000033e0 * sin(-4.78e0 + 5.573024e0 * $dk) - 0.00000032e0 * sin(5.33e0 + 6.069644e0 * $dk) - 0.00000021e0 * sin(2.65e0 + 0.020781e0 * $dk) - 0.00000021e0 * sin(5.61e0 + 2.942400e0 * $dk) + 0.00000019e0 * sin(-0.93e0 + 0.000799e0 * $dk) - 0.00000016e0 * sin(3.22e0 + 4.694014e0 * $dk) + 0.00000016e0 * sin(-3.59e0 + 0.006829e0 * $dk) - 0.00000016e0 * sin(1.96e0 + 2.146279e0 * $dk) - 0.00000016e0 * sin(5.92e0 + 15.720504e0 * $dk) + 0.00000115e0 * sin(23.671e0 + 83.9950108e0 * $dk) + 0.00000115e0 * sin(17.845e0 + 71.4292098e0 * $dk); $jjd = 2451545 + $t * 365.25e0; $jjd += 0.0003472222e0; // add 30s for rounding to nearest minute $d = $code1 / 100.0; $tetuj = (32.23e0 * ($d - 18.30e0) * ($d - 18.30e0) - 15) / 86400.e0; $jjd -= $tetuj; // minus TE-TU before conversion to date $this->JJD = $jjd; if ($jjd < 2299160.5e0) $this->JJDATEJ(); else $this->JJDATE(); if ($this->Year == $code1) $this->conv($nn); } } } ?>