<?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 2024 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 2154 1105 0958 0833 0258 0947 0309 1122 0228 1448 0121 1648 0133 1934 0403 1933 0526 1818 0651 1615 0818 1534 02 2302 1117 0016 1011 0031 0853 0354 1053 0333 1248 0242 1612 0142 1813 0233 2016 0516 1947 0633 1828 0804 1633 0926 1618 03 1129 0130 1029 0147 0921 0436 1213 0352 1415 0258 1739 0209 1934 0345 2047 0627 1958 0742 1839 0918 1658 1023 1718 04 0010 1140 0246 1052 0301 1001 0506 1341 0407 1541 0316 1906 0248 2043 0500 2109 0736 2009 0851 1852 1029 1734 1107 1830 05 0120 1153 0404 1126 0407 1058 0529 1510 0422 1707 0339 2032 0341 2138 0615 2126 0843 2019 1002 1908 1134 1821 1139 1950 06 0233 1208 0518 1214 0459 1212 0547 1640 0436 1835 0411 2151 0446 2216 0729 2139 0952 2031 1115 1928 1226 1925 1202 2113 07 0350 1228 0620 1322 0538 1340 0602 1809 0453 2005 0456 2256 0600 2244 0838 2150 1101 2044 1228 1955 1306 2039 1220 2235 08 0510 1257 0708 1446 0605 1512 0617 1939 0514 2134 0555 2344 0717 2304 0947 2201 1213 2101 1339 2033 1335 2201 1235 2358 09 0629 1338 0741 1618 0626 1645 0633 2109 0541 2259 0705 0831 2319 1055 2212 1327 2123 1440 2126 1357 2325 1249 10 0740 1436 0805 1752 0643 1816 0651 2239 0618 0820 0018 0943 2332 1203 2224 1440 2154 1529 2234 1414 1303 0121 11 0835 1554 0824 1923 0659 1946 0714 0709 0012 0935 0042 1052 2343 1314 2238 1549 2238 1605 2354 1429 0050 1319 0245 12 0915 1722 0840 2051 0714 2115 0746 0006 0812 0109 1048 0100 1200 2354 1427 2257 1647 2339 1632 1443 0215 1338 0413 13 0943 1854 0855 2217 0731 2243 0828 0125 0925 0150 1158 0114 1308 1542 2323 1733 1653 0120 1458 0342 1403 0543 14 1004 2023 0910 2343 0750 0924 0229 1039 0219 1307 0126 1418 0005 1656 2359 1806 0055 1709 0248 1516 0511 1439 0712 15 1021 2150 0928 0816 0010 1030 0318 1153 0239 1414 0137 1531 0018 1803 1830 0221 1724 0416 1538 0643 1531 0831 16 1035 2314 0949 0107 0851 0131 1143 0352 1304 0255 1524 0148 1645 0035 1858 0052 1850 0352 1739 0546 1608 0816 1637 0934 17 1050 1017 0228 0938 0242 1256 0416 1413 0308 1635 0200 1802 0057 1938 0202 1906 0523 1755 0716 1651 0943 1755 1018 18 1105 0036 1054 0344 1036 0338 1408 0434 1521 0319 1750 0214 1915 0128 2007 0326 1921 0652 1815 0848 1750 1054 1915 1049 19 1123 0158 1144 0448 1144 0419 1518 0448 1629 0330 1906 0233 2018 0211 2029 0456 1936 0822 1840 1022 1902 1148 2032 1111 20 1146 0319 1245 0539 1256 0449 1626 0501 1740 0342 2023 0258 2107 0313 2046 0627 1953 0953 1917 1152 2020 1224 2147 1128 21 1216 0438 1355 0616 1408 0511 1734 0512 1852 0354 2133 0334 2142 0430 2102 0757 2015 1125 2006 1310 2138 1250 2257 1141 22 1257 0551 1507 0643 1520 0527 1843 0522 2008 0410 2229 0425 2207 0558 2116 0926 2044 1254 2109 1411 2252 1308 1152 23 1351 0651 1619 0703 1629 0541 1954 0534 2126 0430 2311 0534 2226 0728 2132 1053 2124 1416 2222 1455 1323 0006 1202 24 1455 0739 1731 0719 1737 0552 2108 0548 2240 0459 2342 0655 2242 0856 2150 1221 2217 1526 2339 1526 0003 1335 0114 1214 25 1606 0813 1839 0732 1845 0603 2224 0604 2345 0540 0821 2256 1022 2213 1349 2323 1618 1547 0112 1346 0223 1226 26 1720 0838 1947 0743 1955 0613 2340 0627 0636 0003 0948 2311 1147 2245 1513 1655 0054 1603 0220 1356 0334 1242 27 1831 0857 2055 0754 2106 0625 0659 0035 0748 0020 1113 2327 1312 2328 1629 0036 1722 0206 1516 0328 1408 0447 1303 28 1942 0911 2204 0805 2220 0640 0051 0744 0112 0910 0035 1236 2346 1436 1731 0152 1741 0216 1527 0438 1421 0601 1331 29 2050 0924 2316 0817 2336 0658 0150 0844 0138 1035 0049 1359 1601 0025 1818 0305 1755 0324 1538 0550 1438 0713 1411 30 2157 0935 0723 0236 0958 0158 1201 0104 1523 0011 1723 0133 1851 0416 1807 0431 1549 0704 1502 0814 1506 31 2306 0946 0050 0857 0214 1325 0045 1835 0247 1915 0541 1600 0904 1616
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.