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