今後100年の春分の日と秋分の日

もうすぐ春分の日ですね。

ご存じの通り、春分の日及び秋分の日は天文学的計算によって求まるので、年によって違います。

というわけで、春分・秋分の日を求める関数を考えてみます。
もっとも、理科年表を見てプログラムに置き換えるだけです。実は以前別のところで全く同じ事をやっています。今回はRubyを使ってみました。

def equinox( year, spring ) 
	((spring ? 20.8431 : 23.2488)+0.242194*(year-1980)-
	(year-1980)/4).floor
end

table = "<table><tr><th>年</th><th>春分の日</th><th>秋分の日</th></tr>"
(2010..2109).each do |y| 
	table +=
		"<tr class='"+(y%2==0?"even":"odd")+"'><td>"+y.to_s+"</td><td>3月"+
		equinox( y, true ).to_s+"日</td>""<td>9月"+
		equinox( y, false ).to_s+"日</td></tr>"
end

p table + "</table>"

Rubyは範囲オブジェクト(2010..2109)が使えるので便利ですね。
結果は以下の通りです。

春分の日 秋分の日
2010 3月21日 9月23日
2011 3月21日 9月23日
2012 3月20日 9月22日
2013 3月20日 9月23日
2014 3月21日 9月23日
2015 3月21日 9月23日
2016 3月20日 9月22日
2017 3月20日 9月23日
2018 3月21日 9月23日
2019 3月21日 9月23日
2020 3月20日 9月22日
2021 3月20日 9月23日
2022 3月21日 9月23日
2023 3月21日 9月23日
2024 3月20日 9月22日
2025 3月20日 9月23日
2026 3月20日 9月23日
2027 3月21日 9月23日
2028 3月20日 9月22日
2029 3月20日 9月23日
2030 3月20日 9月23日
2031 3月21日 9月23日
2032 3月20日 9月22日
2033 3月20日 9月23日
2034 3月20日 9月23日
2035 3月21日 9月23日
2036 3月20日 9月22日
2037 3月20日 9月23日
2038 3月20日 9月23日
2039 3月21日 9月23日
2040 3月20日 9月22日
2041 3月20日 9月23日
2042 3月20日 9月23日
2043 3月21日 9月23日
2044 3月20日 9月22日
2045 3月20日 9月22日
2046 3月20日 9月23日
2047 3月21日 9月23日
2048 3月20日 9月22日
2049 3月20日 9月22日
2050 3月20日 9月23日
2051 3月21日 9月23日
2052 3月20日 9月22日
2053 3月20日 9月22日
2054 3月20日 9月23日
2055 3月21日 9月23日
2056 3月20日 9月22日
2057 3月20日 9月22日
2058 3月20日 9月23日
2059 3月20日 9月23日
春分の日 秋分の日
2060 3月20日 9月22日
2061 3月20日 9月22日
2062 3月20日 9月23日
2063 3月20日 9月23日
2064 3月20日 9月22日
2065 3月20日 9月22日
2066 3月20日 9月23日
2067 3月20日 9月23日
2068 3月20日 9月22日
2069 3月20日 9月22日
2070 3月20日 9月23日
2071 3月20日 9月23日
2072 3月20日 9月22日
2073 3月20日 9月22日
2074 3月20日 9月23日
2075 3月20日 9月23日
2076 3月20日 9月22日
2077 3月20日 9月22日
2078 3月20日 9月22日
2079 3月20日 9月23日
2080 3月20日 9月22日
2081 3月20日 9月22日
2082 3月20日 9月22日
2083 3月20日 9月23日
2084 3月20日 9月22日
2085 3月20日 9月22日
2086 3月20日 9月22日
2087 3月20日 9月23日
2088 3月20日 9月22日
2089 3月20日 9月22日
2090 3月20日 9月22日
2091 3月20日 9月23日
2092 3月19日 9月22日
2093 3月20日 9月22日
2094 3月20日 9月22日
2095 3月20日 9月23日
2096 3月19日 9月22日
2097 3月20日 9月22日
2098 3月20日 9月22日
2099 3月20日 9月23日
2100 3月19日 9月22日
2101 3月20日 9月22日
2102 3月20日 9月22日
2103 3月20日 9月23日
2104 3月19日 9月22日
2105 3月20日 9月22日
2106 3月20日 9月22日
2107 3月20日 9月23日
2108 3月19日 9月22日
2109 3月20日 9月22日

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*