<?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 2023 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 1237 0230 1227 0508 1109 0402 1412 0530 1528 0425 1804 0323 1946 0229 2116 0414 2038 0747 1930 0934 1832 1130 1926 1144 02 1256 0345 1316 0606 1204 0453 1524 0550 1639 0438 1926 0341 2102 0309 2143 0547 2053 0914 1951 1100 1928 1229 2039 1211 03 1320 0459 1413 0654 1308 0533 1635 0605 1753 0450 2051 0403 2204 0405 2203 0721 2109 1039 2018 1223 2033 1313 2151 1231 04 1350 0609 1519 0730 1416 0602 1746 0618 1909 0504 2212 0435 2248 0521 2219 0851 2128 1204 2055 1340 2144 1346 2301 1246 05 1430 0715 1629 0758 1528 0625 1858 0631 2029 0519 2322 0522 2319 0649 2234 1017 2151 1326 2143 1446 2256 1409 1300 06 1522 0810 1740 0818 1638 0643 2011 0643 2152 0538 0626 2342 0820 2249 1141 2221 1444 2242 1538 1426 0009 1311 07 1622 0854 1850 0835 1750 0657 2129 0657 2315 0604 0014 0746 2359 0950 2306 1303 2301 1555 2350 1616 0007 1441 0118 1323 08 1729 0928 2000 0850 1900 0711 2249 0714 0641 0051 0914 1115 2325 1423 2353 1654 1643 0117 1453 0227 1335 09 1839 0953 2110 0903 2011 0723 0735 0031 0733 0118 1042 0014 1237 2350 1542 1740 0100 1704 0225 1505 0340 1349 10 1950 1013 2220 0915 2125 0736 0010 0803 0133 0841 0138 1207 0029 1357 1656 0054 1813 0212 1721 0335 1516 0456 1406 11 2059 1029 2335 0929 2241 0750 0130 0843 0217 1003 0153 1329 0044 1516 0023 1802 0203 1838 0322 1734 0446 1529 0616 1430 12 2208 1042 0944 0808 0240 0940 0249 1129 0208 1449 0101 1634 0106 1856 0314 1857 0431 1746 0601 1545 0737 1504 13 2319 1055 0052 1003 0001 0830 0335 1052 0313 1255 0222 1607 0122 1751 0201 1938 0425 1913 0541 1757 0719 1604 0853 1553 14 1108 0212 1028 0122 0902 0415 1215 0331 1418 0237 1726 0148 1903 0305 2009 0535 1926 0651 1809 0839 1631 0957 1659 15 0031 1123 0334 1105 0238 0947 0444 1343 0346 1540 0255 1845 0224 2006 0414 2032 0644 1937 0803 1822 0959 1710 1044 1820 16 0148 1140 0450 1158 0345 1049 0506 1510 0400 1700 0318 2001 0311 2057 0525 2050 0753 1949 0918 1838 1109 1804 1117 1948 17 0309 1202 0554 1309 0436 1207 0524 1634 0414 1820 0347 2112 0408 2136 0635 2104 0903 2001 1036 1900 1205 1914 1142 2116 18 0433 1233 0641 1435 0514 1335 0539 1758 0431 1941 0426 2212 0514 2205 0745 2117 1014 2015 1155 1930 1245 2036 1200 2241 19 0557 1318 0715 1608 0541 1506 0553 1920 0450 2101 0517 2300 0624 2226 0853 2129 1130 2032 1311 2012 1315 2202 1215 20 0711 1421 0740 1740 0601 1634 0609 2042 0515 2216 0617 2335 0735 2243 1001 2140 1247 2056 1416 2110 1336 2328 1229 0004 21 0808 1543 0759 1908 0618 1801 0626 2203 0548 2325 0726 0845 2257 1112 2153 1405 2129 1506 2224 1353 1243 0125 22 0849 1714 0815 2033 0633 1925 0648 2323 0631 0836 0001 0954 2309 1224 2208 1519 2216 1543 2349 1408 0052 1259 0246 23 0918 1846 0830 2155 0649 2048 0716 0726 0020 0947 0021 1102 2321 1341 2227 1620 2321 1610 1422 0215 1319 0408 24 0939 2015 0845 2315 0705 2209 0753 0035 0830 0103 1056 0037 1211 2333 1459 2254 1707 1630 0116 1437 0338 1344 0531 25 0956 2140 0903 0724 2329 0840 0138 0940 0135 1205 0050 1323 2347 1618 2333 1742 0041 1646 0244 1454 0502 1417 0649 26 1012 2300 0924 0033 0848 0939 0228 1050 0158 1315 0103 1437 1730 1806 0210 1701 0410 1516 0626 1503 0800 27 1026 0950 0149 0920 0144 1045 0306 1201 0216 1425 0115 1557 0004 1828 0028 1825 0342 1716 0536 1544 0750 1601 0857 28 1042 0017 1024 0300 1000 0252 1156 0334 1311 0231 1540 0128 1719 0026 1911 0142 1841 0512 1732 0702 1622 0908 1709 0941 29 1100 0134 1052 0349 1307 0355 1421 0244 1659 0143 1838 0059 1942 0310 1857 0640 1651 0728 1714 1014 1821 1011 30 1122 0249 1154 0432 1417 0411 1532 0256 1822 0203 1947 0146 2004 0443 1912 0807 1716 0854 1816 1106 1934 1034 31 1151 0401 1302 0506 1646 0309 2039 0251 2022 0616 1748 1016 2045 1051
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.