Instalace je pak triviální:
composer require jiri.jozif/moonriset
I použití je snadné:
use JiriJozif\Moonriset\Moonriset;
$mrs = new Moonriset(51.48, 0.0, "Europe/London"); //Royal Observatory, Greenwich
echo "Moon rises today at {$mrs->rise["hh_mm"]} and sets at {$mrs->set["hh_mm"]}";
Pozor, v použití existují mezi verzemi drobné rozdíly. Ale výsledky jsou pochopitelně stejné.
<?php
require_once("MoonRiSet.cls.php");
$moon = new MoonRiSet();
echo "Měsíc dnes vychází v {$moon->rise["hh:mm"]} a zapadá v {$moon->set["hh:mm"]}"
.", přes místní poledník přejde v {$moon->transit["hh:mm"]}";
?>
$moon = new MoonRiSet([$latitude [, $longitude [, $timezone]]]);
float $latitude: zeměpisná šířka místa ve stupních, pokud není zadána, použije se výchozí hodnota ze systému (ini_get("date.default_latitude")).
Šířka na jih od rovníku je záporné číslo.
float $longitude: zeměpisná délka místa ve stupních, pokud není zadána, použije se výchozí hodnota ze systému: (ini_get("date.default_longitude")).
Délka na západ od nultého poledníku je záporné číslo.
string $timezone: časová zóna místa z PHP: List of Supported Timezones,
pokud není zadána, použije se výchozí hodnota ze systému: (ini_get("date.timezone")).
bool $moon->setDate($year, $month, $day);
Všechny parametry jsou typu int. Metoda vrací true v případě zdárného výpočtu okamžiku východu a západu Měsíce.
float $moon->rise["timestamp"]; string $moon->rise["hh:mm"]; string $moon->rise["hhmm"]; float $moon->set["timestamp"]; string $moon->set["hh:mm"]; string $moon->set["hhmm"]; float $moon->transit["timestamp"]; string $moon->transit["hh:mm"]; string $moon->transit["hhmm"];
Timestamp je unixová časová značka, běžně používaná v PHP. Ostatni formáty uvádějí vždy pouze hodiny a minuty jako textový řetězec.
Někdy mohou nastat zvláštní případy, například v určený den Měsíc nezapadá, ale pouze vychází. Pak timestamp pro západ vraci true a ostatní formáty vrací mezery.
Naopak, pokud v zadaný den Měsíc nevychází, ale pouze zapadá, vrací timestamp false a ostatní formáty vrací zase mezery.
Ve vyšších zeměpisných šířkách Měsíc po celý den buď vůbec nezapadá, pak timestamp východu i západu vrací true, zbylé formáty vrací "****" a "**:**".
Nebo Měsíc celý den nevyjde, timestamp obou hodnot pak vrací false, zbylé formáty vrací "----" a "--:--". Při univerzálním použití
této třídy je tedy nutné vždy provádět testy na viditelnost, ted například if ($moon->rise["timestamp"] === false) a podobně.
Přiklad použití je ve vzorovém programu world.php.
float $moon->rise2["timestamp"]; string $moon->rise2["hh:mm"]; string $moon->rise2["hhmm"]; float $moon->set2["timestamp"]; string $moon->set2["hh:mm"]; string $moon->set2["hhmm"];
Pokud neexistuje druhý východ či západ, obsahují proměnné hodnotu false.
Přiklad použití je ve vzorovém programu table.php. V našich šířkách není však třeba brát na toto ohled.
Rise and Set for the Moon for 2026
Latitude = 50.1° Longitude = 14.4° Timezone = Europe/Prague
Jan. Feb. Mar. Apr. May June July Aug. Sept. Oct. Nov. Dec.
Day Rise Set Rise Set Rise Set Rise Set Rise Set Rise Set Rise Set Rise Set Rise Set Rise Set Rise Set Rise Set
h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m
01 1335 0618 1618 0741 1519 0606 1913 0613 2038 0502 2250 0457 2236 0548 2149 0830 2056 1128 2039 1325 2232 1338 1238
02 1436 0735 1745 0803 1641 0625 2026 0625 2151 0520 2334 0548 2257 0700 2201 0945 2120 1252 2140 1434 2355 1400 0023 1252
03 1555 0833 1907 0820 1800 0640 2140 0639 2300 0544 0649 2314 0813 2214 1100 2154 1416 2255 1528 1417 0139 1306
04 1723 0914 2024 0835 1917 0653 2253 0655 0616 0007 0758 2328 0927 2230 1218 2242 1535 1606 0115 1432 0253 1321
05 1851 0942 2139 0847 2030 0706 0715 0003 0659 0031 0910 2341 1040 2250 1341 2347 1640 0018 1634 0232 1445 0407 1337
06 2014 1001 2252 0900 2145 0719 0005 0742 0054 0753 0051 1023 2353 1155 2317 1505 1730 0144 1654 0348 1459 0521 1358
07 2133 1017 0913 2258 0733 0113 0817 0135 0857 0107 1137 1311 2355 1629 0107 1805 0307 1711 0503 1514 0633 1424
08 2247 1030 0004 0928 0750 0212 0904 0205 1008 0121 1251 0007 1431 1747 0233 1829 0427 1725 0618 1532 0742 1500
09 2359 1042 0117 0947 0011 0812 0300 1002 0228 1122 0134 1408 0024 1556 0050 1848 0401 1849 0545 1738 0733 1554 0842 1545
10 1054 0229 1011 0122 0841 0337 1110 0246 1236 0147 1528 0047 1724 0203 1933 0526 1904 0702 1752 0845 1623 0932 1642
11 0110 1108 0338 1044 0226 0921 0404 1223 0301 1353 0203 1653 0119 1850 0330 2004 0647 1918 0818 1808 0952 1701 1009 1747
12 0221 1124 0439 1129 0322 1013 0425 1340 0315 1510 0222 1823 0205 2003 0500 2027 0806 1932 0935 1827 1049 1751 1038 1856
13 0333 1145 0530 1226 0405 1116 0442 1457 0329 1630 0249 1954 0310 2059 0628 2044 0923 1946 1050 1851 1135 1850 1100 2006
14 0444 1212 0609 1335 0438 1228 0457 1616 0343 1756 0328 2117 0432 2138 0753 2059 1040 2003 1201 1923 1209 1957 1117 2117
15 0550 1249 0638 1450 0503 1345 0511 1737 0401 1926 0423 2222 0602 2204 0913 2112 1156 2023 1305 2005 1235 2107 1132 2228
16 0648 1340 0700 1609 0522 1504 0525 1901 0424 2058 0539 2309 0733 2224 1030 2126 1309 2050 1358 2059 1255 2219 1145 2339
17 0734 1442 0718 1728 0538 1623 0541 2029 0456 2226 0706 2341 0858 2240 1146 2141 1417 2126 1439 2201 1312 2331 1157
18 0809 1553 0733 1847 0552 1744 0600 2201 0543 2342 0835 1019 2254 1301 2159 1517 2212 1510 2311 1326 1211 0053
19 0835 1710 0746 2006 0605 1906 0626 2331 0647 1002 0004 1137 2307 1415 2221 1605 2310 1534 1339 0043 1227 0210
20 0855 1827 0759 2127 0620 2030 0704 0807 0037 1123 0021 1251 2321 1526 2251 1642 1552 0023 1353 0158 1248 0332
21 0911 1945 0813 2251 0637 2159 0756 0052 0934 0115 1239 0035 1405 2336 1631 2331 1710 0016 1608 0137 1408 0316 1317 0459
22 0925 2102 0831 0658 2328 0906 0157 1100 0141 1353 0048 1518 2355 1726 1732 0129 1621 0250 1426 0437 1358 0625
23 0938 2219 0854 0017 0727 1027 0243 1221 0200 1506 0101 1630 1810 0021 1749 0242 1635 0406 1451 0604 1457 0745
24 0951 2340 0925 0143 0808 0053 1151 0315 1338 0215 1618 0115 1739 0020 1843 0124 1803 0358 1649 0524 1526 0734 1614 0847
25 1006 1010 0304 0905 0207 1314 0338 1451 0228 1730 0131 1840 0053 1908 0233 1816 0513 1606 0544 1616 0858 1744 0933
26 1025 0103 1112 0413 1017 0303 1432 0355 1604 0241 1841 0152 1931 0137 1927 0347 1830 0629 1626 0710 1724 1009 1916 1003
27 1050 0229 1228 0505 1139 0343 1547 0408 1716 0254 1948 0219 2011 0232 1943 0502 1844 0749 1655 0838 1847 1102 2044 1026
28 1126 0356 1353 0541 1303 0411 1700 0421 1827 0308 2046 0255 2040 0337 1957 0617 1902 0911 1735 1005 2015 1138 2207 1043
29 1217 0516 1524 0531 1813 0433 1940 0326 2133 0343 2103 0448 2009 0732 1925 1036 1831 1123 2142 1204 2326 1059
30 1327 0621 1643 0547 1926 0446 2050 0348 2209 0441 2121 0602 2023 0848 1956 1202 1944 1223 2305 1223 1113
31 1450 0708 1758 0601 2155 0417 2136 0717 2038 1007 2107 1307 0042 1127
Srovnejte s referenčními údaji na Astronomical Applications Department of the U.S. Naval Observatory pro tento rok. Rozdíl jedné minuty nehraje v tomto případě velkou roli. Navíc tato třída pracuje i s letním časem, proto jsou časy východu a západu Měsíce v tyto dny o hodinu posunuty oproti referenční tabulce.
unzip -l moon-rise-set.zip
Archive: moon-rise-set.zip
Length Date Time Name
--------- ---------- ----- ----
12657 2023-07-03 07:32 MoonRiSet.cls.php
2130 2020-11-24 08:30 table.php
2680 2020-11-24 08:26 world.php
--------- -------
17467 3 files
Program table.php vytváří výše uvedenou tabulku a program world.php zobrazuje východy a západy Měsíce v různých místech na světě pro dnešní den.
Pro výpočet polohy Měsíce na obloze je použito zkrácených výpočtů dle Low precision formulae for planetary position, Flandern & Pulkkinen. Přesnost polohy je ±5' v rektascenzi a ±1' v deklinaci pro nejbližší století, to je zcela dostatečná přesnost pro výpočet východu a západu Měsíce. Pro podrobnější studium doporučuji knihu Oliver Montenbruck and Thomas Pfleger: "Astronomy on the Personal Computer", Springer (bohužel cena je 100$). Algoritmus výpočtu je i na Approximate astronomical positions.
