Commit 560ce05a authored by ivan zlax's avatar ivan zlax
Browse files

accurate 3181-3197 yolds

parent f5649550
Approximate astronomical Wheel of the Year
Accurate astronomical Wheel of the Year
https://wheeloftheyear.soundragon.su
......
......@@ -2,8 +2,8 @@
<!-- https://gitlab.com/zlax/solarwheeloftheyear -->
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!--
Image: https://gitlab.com/DougInAMug/octosol
;
;=
.=; .X
......@@ -150,13 +150,12 @@
.
-->
<link rel="icon" href="favicon.ico" type="image/x-icon"><link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="anthrstlsht.css">
<script type="text/javascript" src="dtime.js"></script>
<title>solar wheel of the year</title>
</head>
<body>
<br><p align="center"><input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable('UTC', 'erisian');" value="Erisian time"/></p>
<br><p align="center"><input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(0, 'erisian');" value="Erisian time"/></p>
<p align="center">Christian time:<br><input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(-11, 'UTC-11');" value="UTC-11"/>
<input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(-10, 'UTC-10');" value="UTC-10"/>
<input type="button" onclick="document.getElementById('soltable').innerHTML = makeTable(-9, 'UTC-9');" value="UTC-9"/>
......@@ -187,41 +186,126 @@
<script type="text/javascript">
// The exact reference year is only 2021. The dates of the others are calculate according to this model.
var ve = Array(); // Vernal Equinox
// https://www.imcce.fr/newsletter/docs/Equinoxe_printemps_1583_2999.pdf
ve[2015] = new Date('Fri Mar 20 2015 22:45:09 GMT+0000');
ve[2016] = new Date('Sun Mar 20 2016 04:30:11 GMT+0000');
ve[2017] = new Date('Mon Mar 20 2017 10:28:38 GMT+0000');
ve[2018] = new Date('Tue Mar 20 2018 16:15:27 GMT+0000');
ve[2019] = new Date('Wed Mar 20 2019 21:58:25 GMT+0000');
ve[2020] = new Date('Fri Mar 20 2020 03:49:36 GMT+0000');
ve[2021] = new Date('Sat Mar 20 2021 09:37:27 GMT+0000');
ve[2022] = new Date('Sun Mar 20 2022 15:33:23 GMT+0000');
ve[2023] = new Date('Mon Mar 20 2023 21:24:24 GMT+0000');
ve[2024] = new Date('Wed Mar 20 2024 03:06:21 GMT+0000');
ve[2025] = new Date('Thu Mar 20 2025 09:01:25 GMT+0000');
ve[2026] = new Date('Fri Mar 20 2026 14:45:53 GMT+0000');
ve[2027] = new Date('Sat Mar 20 2027 20:24:36 GMT+0000');
ve[2028] = new Date('Mon Mar 20 2028 02:17:02 GMT+0000');
ve[2029] = new Date('Tue Mar 20 2029 08:01:52 GMT+0000');
ve[2030] = new Date('Wed Mar 20 2030 13:51:58 GMT+0000');
ve[2031] = new Date('Thu Mar 20 2031 19:40:51 GMT+0000');
ve[2032] = new Date('Sat Mar 20 2032 01:21:45 GMT+0000');
ve[2033] = new Date('Sun Mar 20 2033 07:22:35 GMT+0000');
ve[2034] = new Date('Mon Mar 20 2034 13:17:20 GMT+0000');
ve[2035] = new Date('Tue Mar 20 2035 19:02:34 GMT+0000');
ve[2036] = new Date('Thu Mar 20 2035 01:02:40 GMT+0000');
var ns = Array(); // Northern Solstice
// https://www.imcce.fr/newsletter/docs/Solstice_ete_1583_2999.pdf
ns[2015] = new Date('Sun Jun 21 2015 16:37:55 GMT+0000');
ns[2016] = new Date('Mon Jun 20 2016 22:34:11 GMT+0000');
ns[2017] = new Date('Wed Jun 21 2017 04:24:09 GMT+0000');
ns[2018] = new Date('Thu Jun 21 2018 10:07:18 GMT+0000');
ns[2019] = new Date('Fri Jun 21 2019 15:54:14 GMT+0000');
ns[2020] = new Date('Sat Jun 20 2020 21:43:40 GMT+0000');
ns[2021] = new Date('Mon Jun 21 2021 03:32:08 GMT+0000');
ns[2022] = new Date('Tue Jun 21 2022 09:13:49 GMT+0000');
ns[2023] = new Date('Wed Jun 21 2023 14:57:47 GMT+0000');
ns[2024] = new Date('Thu Jun 20 2024 20:50:56 GMT+0000');
ns[2025] = new Date('Sat Jun 21 2025 02:42:11 GMT+0000');
ns[2026] = new Date('Sun Jun 21 2026 08:24:26 GMT+0000');
ns[2027] = new Date('Mon Jun 21 2027 14:10:45 GMT+0000');
ns[2028] = new Date('Tue Jun 20 2028 20:01:54 GMT+0000');
ns[2029] = new Date('Thu Jun 21 2029 01:48:11 GMT+0000');
ns[2030] = new Date('Fri Jun 21 2030 07:31:11 GMT+0000');
ns[2031] = new Date('Sat Jun 21 2031 13:17:00 GMT+0000');
ns[2032] = new Date('Sun Jun 20 2032 19:08:38 GMT+0000');
ns[2033] = new Date('Tue Jun 21 2033 01:00:59 GMT+0000');
ns[2034] = new Date('Wed Jun 21 2034 06:44:02 GMT+0000');
ns[2035] = new Date('Thu Jun 21 2035 12:32:58 GMT+0000');
var ae = Array(); // Autumnal Equinox
// https://www.imcce.fr/newsletter/docs/Equinoxe_automne_1583_2999.pdf
ae[2015] = new Date('Wed Sep 23 2015 08:20:33 GMT+0000');
ae[2016] = new Date('Thu Sep 22 2016 14:21:07 GMT+0000');
ae[2017] = new Date('Fri Sep 22 2017 20:01:48 GMT+0000');
ae[2018] = new Date('Sun Sep 23 2018 01:54:05 GMT+0000');
ae[2019] = new Date('Mon Sep 23 2019 07:50:10 GMT+0000');
ae[2020] = new Date('Tue Sep 22 2020 13:30:38 GMT+0000');
ae[2021] = new Date('Wed Sep 22 2021 19:21:03 GMT+0000');
ae[2022] = new Date('Fri Sep 23 2022 01:03:40 GMT+0000');
ae[2023] = new Date('Sat Sep 23 2023 06:49:56 GMT+0000');
ae[2024] = new Date('Sun Sep 22 2024 12:43:36 GMT+0000');
ae[2025] = new Date('Mon Sep 22 2025 18:19:16 GMT+0000');
ae[2026] = new Date('Wed Sep 23 2026 00:05:08 GMT+0000');
ae[2027] = new Date('Thu Sep 23 2027 06:01:38 GMT+0000');
ae[2028] = new Date('Fri Sep 22 2028 11:45:12 GMT+0000');
ae[2029] = new Date('Sat Sep 22 2029 17:38:23 GMT+0000');
ae[2030] = new Date('Sun Sep 22 2030 23:26:46 GMT+0000');
ae[2031] = new Date('Tue Sep 23 2031 05:15:10 GMT+0000');
ae[2032] = new Date('Wed Sep 22 2032 11:10:44 GMT+0000');
ae[2033] = new Date('Thu Sep 22 2033 16:51:31 GMT+0000');
ae[2034] = new Date('Fri Sep 22 2034 22:39:25 GMT+0000');
ae[2035] = new Date('Sun Sep 23 2035 04:38:46 GMT+0000');
var ss = Array(); // Southern Solstice
// https://www.imcce.fr/newsletter/docs/Solstice_ete_1583_2999.pdf
ss[2014] = new Date('Sun Dec 21 2014 23:03:01 GMT+0000');
ss[2015] = new Date('Tue Dec 22 2015 04:47:57 GMT+0000');
ss[2016] = new Date('Wed Dec 21 2016 10:44:10 GMT+0000');
ss[2017] = new Date('Thu Dec 21 2017 16:27:57 GMT+0000');
ss[2018] = new Date('Fri Dec 21 2018 22:22:44 GMT+0000');
ss[2019] = new Date('Sun Dec 22 2019 04:19:25 GMT+0000');
ss[2020] = new Date('Mon Dec 21 2020 10:02:19 GMT+0000');
ss[2021] = new Date('Tue Dec 21 2021 15:59:16 GMT+0000');
ss[2022] = new Date('Wed Dec 21 2022 21:48:10 GMT+0000');
ss[2023] = new Date('Fri Dec 22 2023 03:27:19 GMT+0000');
ss[2024] = new Date('Sat Dec 21 2024 09:20:30 GMT+0000');
ss[2025] = new Date('Sun Dec 21 2025 15:03:01 GMT+0000');
ss[2026] = new Date('Mon Dec 21 2026 20:50:09 GMT+0000');
ss[2027] = new Date('Wed Dec 22 2027 02:42:04 GMT+0000');
ss[2028] = new Date('Thu Dec 21 2028 08:19:33 GMT+0000');
ss[2029] = new Date('Fri Dec 21 2029 14:13:59 GMT+0000');
ss[2030] = new Date('Sat Dec 21 2030 20:09:30 GMT+0000');
ss[2031] = new Date('Mon Dec 22 2031 01:55:25 GMT+0000');
ss[2032] = new Date('Tue Dec 21 2032 07:55:48 GMT+0000');
ss[2033] = new Date('Wed Dec 21 2033 13:45:51 GMT+0000');
ss[2034] = new Date('Thu Dec 21 2034 19:33:50 GMT+0000');
ss[2035] = new Date('Sat Dec 22 2035 01:30:42 GMT+0000');
var VernalEquinox2021 = new Date('Sat Mar 20 2021 09:37:27 GMT+0000');
var NorthernSolstice2021 = new Date('Mon Jun 21 2021 03:32:08 GMT+0000');
var AutumnalEquinox2021 = new Date('Wed Sep 22 2021 19:21:03 GMT+0000');
var SouthernSolstice2021 = new Date('Tue Dec 21 2021 15:59:16 GMT+0000');
var VernalEquinox2022 = new Date('Sun Mar 20 2022 15:33:23 GMT+0000');
function formatedDate(datein, timeoutput) {
function formatedDate(datein, timeoutput, UTC) {
if (timeoutput == 'erisian') var dateout = dtime(datein, 'timeofyold');
else var dateout = "" + ("0" + ( datein.getUTCDate())).slice(-2) + "." + ("0" + ( datein.getUTCMonth() + 1)).slice(-2) + " " + ("0" + datein.getUTCHours()).slice(-2) + ":" + ("0" + datein.getUTCMinutes()).slice(-2);
else {
var timein = new Date ( datein.getTime() + ( UTC * 60 * 60 * 1000 ));
var dateout = "" + ("0" + ( timein.getUTCDate())).slice(-2) + "." + ("0" + ( timein.getUTCMonth() + 1)).slice(-2) + " " + ("0" + timein.getUTCHours()).slice(-2) + ":" + ("0" + timein.getUTCMinutes()).slice(-2);
}
return dateout;
}
function tableRow(vernalequinox, timeoutput) {
function tableRow(cy, timeoutput, UTC) {
var stringout = "<td>";
if (vernalequinox.getYear() == VernalEquinox2021.getYear()) stringout += "<b>";
if (timeoutput == 'erisian') stringout += dtime(vernalequinox, 'yold');
else stringout += vernalequinox.getFullYear();
if (vernalequinox.getYear() == VernalEquinox2021.getYear()) stringout += "</b>";
var Imbolc = new Date(vernalequinox.getTime() - ((VernalEquinox2022.getTime() - SouthernSolstice2021.getTime()) / 2));
stringout += '<td class = "even">' + formatedDate(Imbolc, timeoutput) + "</td>";
stringout += '</td><td>' + formatedDate(vernalequinox, timeoutput) + "</td>";
var Beltane = new Date(vernalequinox.getTime() + ((NorthernSolstice2021.getTime() - VernalEquinox2021.getTime()) / 2));
stringout += '<td class = "even">' + formatedDate(Beltane, timeoutput) + "</td>";
var Midsummer = new Date(vernalequinox.getTime() + (NorthernSolstice2021.getTime() - VernalEquinox2021.getTime()));
stringout += '<td>' + formatedDate(Midsummer, timeoutput) + "</td>";
var Lughnasadh = new Date(vernalequinox.getTime() + ((NorthernSolstice2021.getTime() - VernalEquinox2021.getTime()) + (AutumnalEquinox2021.getTime() - NorthernSolstice2021.getTime()) / 2));
stringout += '<td class = "even">' + formatedDate(Lughnasadh, timeoutput) + "</td>";
var Mabon = new Date(vernalequinox.getTime() + (AutumnalEquinox2021.getTime() - VernalEquinox2021.getTime()));
stringout += '<td>' + formatedDate(Mabon, timeoutput) + "</td>";
var Samhain = new Date(vernalequinox.getTime() + ((AutumnalEquinox2021.getTime() - VernalEquinox2021.getTime()) + (SouthernSolstice2021.getTime() - AutumnalEquinox2021.getTime()) / 2));
stringout += '<td class = "even">' + formatedDate(Samhain, timeoutput) + "</td>";
var Yule = new Date(vernalequinox.getTime() + (SouthernSolstice2021.getTime() - VernalEquinox2021.getTime()));
stringout += '<td>' + formatedDate(Yule, timeoutput) + "</td>";
if (timeoutput == 'erisian') stringout += dtime(ve[cy], 'yold');
else stringout += cy;
var Imbolc = new Date(ss[cy-1].getTime() + ((ve[cy].getTime() - ss[cy-1].getTime()) / 2));
stringout += '<td class = "even">' + formatedDate(Imbolc, timeoutput, UTC) + "</td>";
stringout += '<td>' + formatedDate(ve[cy], timeoutput, UTC) + "</td>";
var Beltane = new Date(ve[cy].getTime() + ((ns[cy].getTime() - ve[cy].getTime()) / 2));
stringout += '<td class = "even">' + formatedDate(Beltane, timeoutput, UTC) + "</td>";
stringout += '<td>' + formatedDate(ns[cy], timeoutput, UTC) + "</td>";
var Lughnasadh = new Date(ns[cy].getTime() + ((ae[cy].getTime() - ns[cy].getTime()) / 2));
stringout += '<td class = "even">' + formatedDate(Lughnasadh, timeoutput, UTC) + "</td>";
stringout += '<td>' + formatedDate(ae[cy], timeoutput, UTC) + "</td>";
var Samhain = new Date(ae[cy].getTime() + ((ss[cy].getTime() - ae[cy].getTime()) / 2));
stringout += '<td class = "even">' + formatedDate(Samhain, timeoutput, UTC) + "</td>";
stringout += '<td>' + formatedDate(ss[cy], timeoutput, UTC) + "</td>";
return stringout;
}
......@@ -229,11 +313,10 @@ function makeTable(UTC, timeoutput) {
var fulltable = "<table><caption>";
now = new Date();
fulltable += 'Approximate astronomical <a href="https://en.wikipedia.org/wiki/Wheel_of_the_Year">Wheel of the Year</a> - ';
fulltable += 'Accurate astronomical <a href="https://en.wikipedia.org/wiki/Wheel_of_the_Year">Wheel of the Year</a> - ';
if (timeoutput == 'erisian') fulltable += '<a href="https://discordia.fandom.com/wiki/Erisian_Time">Erisian time</a></br>';
else fulltable += '<b>' + timeoutput + '</b> (<a href="https://en.wikipedia.org/wiki/Coordinated_Universal_Time">Coordinated Universal Time</a>)<br>';
fulltable += '<a href="https://en.wikipedia.org/wiki/Tropical_year">Tropical year</a> - ' + ( ( VernalEquinox2022 - VernalEquinox2021 ) / 1000 / 60 / 60 / 24 ) + " days (view source for details)</caption>";
fulltable += '<tr><th>';
fulltable += '</caption><tr><th>';
if (timeoutput == 'erisian') fulltable += 'YOLD';
else fulltable += 'Gregorian Year';
fulltable += '</th><th><a href="https://en.wikipedia.org/wiki/Wheel_of_the_Year#Imbolc">Imbolc</a></th><th><a';
......@@ -247,11 +330,11 @@ function makeTable(UTC, timeoutput) {
if (timeoutput == 'erisian') UTC = 0;
for (var i = 1; i <= 17; i++) {
var current = new Date ( VernalEquinox2021.getTime() + ( UTC * 60 * 60 * 1000 ) - ( ( VernalEquinox2022.getTime() - VernalEquinox2021.getTime() ) * (7 - i) ) );
if (current.getYear() == now.getYear()) fulltable += '<tr class = "currentyear">';
var currentyear = (now.getFullYear() - 8 + i);
if (currentyear == now.getFullYear()) fulltable += '<tr class = "currentyear">';
else if (i % 2 == 0 ) fulltable += '<tr class = "even">';
else fulltable += '<tr class = "odd">'
fulltable += tableRow(current, timeoutput) + "</tr>";
fulltable += tableRow(currentyear, timeoutput, UTC) + "</tr>";
}
fulltable += "</table>";
......@@ -260,13 +343,14 @@ function makeTable(UTC, timeoutput) {
// var currentdate = new Date();
// var utcoffmin = -(currentdate.getTimezoneOffset()/60);
var defaultTable = makeTable(0, "erisian");
document.getElementById("soltable").innerHTML = defaultTable;
</script>
<br><p align="center"><a href="https://gitlab.com/zlax/solarwheeloftheyear">source code</a></p>
<br><p align="center"><a href="https://en.wikipedia.org/wiki/Wheel_of_the_Year"><img src="0.5.0_octosol.png" alt="Octosol by DougInAMug"></a></p>
<br><p align="center"><a href="https://en.wikipedia.org/wiki/Wheel_of_the_Year"><img src="0.5.0_octosol.png" alt="Octosol by DougInAMug"></a></p>
</body>
</html>
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment