もうすぐ春分の日ですね。
ご存じの通り、春分の日及び秋分の日は天文学的計算によって求まるので、年によって違います。
というわけで、春分・秋分の日を求める関数を考えてみます。
もっとも、理科年表を見てプログラムに置き換えるだけです。実は以前別のところで全く同じ事をやっています。今回は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日 |
