中国农历二百年算法及年历 - 和荣笔记 - v4.15, by 杨和荣
二分点,二至点,季节
本节介绍了天文年的二分点和二至点,并且列出了21世纪二分点和二至点的日期和时间表。
由于公历是天文年的近似表达,我们会在公历上标注四个天文年的关键点,二分点和二至点,简称二分二至:
下图显示了在二分点和二至点时刻的太阳位置,以及和 黄道平面和赤道平面的相对关系:
Fred Espenak 提供了21世纪二分点和二至点的日期和时间表(格林威治标准时间), 发表在 http://astropixels.com/ephemeris/soleq2001.html. 下面摘录了几个例子:
二分点和二至点:2001 到 2050 格林威治标准时间 (GMT) 年份 春分 夏至 秋分 冬至 2001 三月 20 13:31 六月 21 07:38 九月 22 23:05 十二月 21 19:22 2002 三月 20 19:16 六月 21 13:25 九月 23 04:56 十二月 22 01:15 2003 三月 21 01:00 六月 21 19:11 九月 23 10:47 十二月 22 07:04 2004 三月 20 06:49 六月 21 00:57 九月 22 16:30 十二月 21 12:42 2005 三月 20 12:34 六月 21 06:46 九月 22 22:23 十二月 21 18:35 ... 2051 三月 20 15:58 六月 21 09:17 九月 23 01:26 十二月 21 22:33 2052 三月 19 21:56 六月 20 15:16 九月 22 07:16 十二月 21 04:18 2053 三月 20 03:46 六月 20 21:03 九月 22 13:05 十二月 21 10:09 2054 三月 20 09:35 六月 21 02:47 九月 22 19:00 十二月 21 16:10 2055 三月 20 15:28 六月 21 08:39 九月 23 00:48 十二月 21 21:56 ... 2096 三月 19 14:03 六月 20 06:31 九月 21 22:55 十二月 20 20:46 2097 三月 19 19:49 六月 20 12:14 九月 22 04:37 十二月 21 02:38 2098 三月 20 01:38 六月 20 18:01 九月 22 10:22 十二月 21 08:19 2099 三月 20 07:17 六月 20 23:41 九月 22 16:10 十二月 21 14:04 2100 三月 20 13:04 六月 21 05:32 九月 22 22:00 十二月 21 19:51
顺便说一下,没有简单的方法可以计算二分点和二至点。 主要原因是天文年的长度不是恒定的(由于多种因素),长度相差最多有30分钟。 我们只能观察,或者用近似值预测二分点和二至点。
另外,地球轨道不是一个圆,运行的角速度也不是常数, 你不能将一个天文年分为4个等分来确定二分点和二至点的日期和时间。
我这里有个简单的Perl程序,可读取二分点和二至点数据,并验证他们的间隔时间。
#- Equinoxes-and-Solstices.pl #- Copyright (c) 2003 HerongYang.com, All Rights Reserved. use Date::Parse; use Date::Format; use Math::Round; $meanYear = 365.2421896698 * 24 * 60 * 60; $meanHalf = round($meanYear/2); $meanQuarter = round($meanYear/4); @equinoxesAndSolstices = (); loadData(); verifyData(); exit; sub verifyData { $l = @equinoxesAndSolstices; for ($i=4; $i<$l; $i++) { my $t = @equinoxesAndSolstices[$i]; my $g = time2str("%Y-%m-%d %H:%M:%S %Z", $t, "GMT"); my $z = time2str("%Y-%m-%d %H:%M:%S %Z", $t, "WST"); print("GMT=$g, WST=$z\n"); my $year = $t - @equinoxesAndSolstices[$i-4]; my $half = $t - @equinoxesAndSolstices[$i-2]; my $quarter = $t - @equinoxesAndSolstices[$i-1]; my $diffYear = $year - $meanYear; my $diffHalf = $half - $meanHalf; my $diffQuarter = $quarter - $meanQuarter; print(" Year Mean=$meanYear, This Year=$year, Diff=" .round($diffYear/60)." minutes\n"); print(" Half Mean=$meanHalf, This Half=$half, Diff=" .round($diffHalf/60/60)." hours\n"); print(" Quarter Mean=$meanQuarter, This Quarter=$quarter, Diff=" .round($diffQuarter/60/60)." hours\n"); } } sub loadData { $data = << "EOD"; 2001= 20 13:31, 21 07:38, 22 23:05, 21 19:22 2002= 20 19:16, 21 13:25, 23 04:56, 22 01:15 2003= 21 01:00, 21 19:11, 23 10:47, 22 07:04 2004= 20 06:49, 21 00:57, 22 16:30, 21 12:42 2005= 20 12:34, 21 06:46, 22 22:23, 21 18:35 2006= 20 18:25, 21 12:26, 23 04:04, 22 00:22 2007= 21 00:07, 21 18:06, 23 09:51, 22 06:08 2008= 20 05:49, 21 00:00, 22 15:45, 21 12:04 2009= 20 11:44, 21 05:45, 22 21:18, 21 17:47 2010= 20 17:32, 21 11:28, 23 03:09, 21 23:38 2011= 20 23:21, 21 17:16, 23 09:05, 22 05:30 2012= 20 05:15, 20 23:08, 22 14:49, 21 11:12 2013= 20 11:02, 21 05:04, 22 20:44, 21 17:11 2014= 20 16:57, 21 10:52, 23 02:30, 21 23:03 2015= 20 22:45, 21 16:38, 23 08:20, 22 04:48 2016= 20 04:31, 20 22:35, 22 14:21, 21 10:45 2017= 20 10:29, 21 04:25, 22 20:02, 21 16:29 2018= 20 16:15, 21 10:07, 23 01:54, 21 22:22 2019= 20 21:58, 21 15:54, 23 07:50, 22 04:19 2020= 20 03:50, 20 21:43, 22 13:31, 21 10:03 2021= 20 09:37, 21 03:32, 22 19:21, 21 15:59 2022= 20 15:33, 21 09:14, 23 01:04, 21 21:48 2023= 20 21:25, 21 14:58, 23 06:50, 22 03:28 2024= 20 03:07, 20 20:51, 22 12:44, 21 09:20 2025= 20 09:02, 21 02:42, 22 18:20, 21 15:03 2026= 20 14:46, 21 08:25, 23 00:06, 21 20:50 2027= 20 20:25, 21 14:11, 23 06:02, 22 02:43 2028= 20 02:17, 20 20:02, 22 11:45, 21 08:20 2029= 20 08:01, 21 01:48, 22 17:37, 21 14:14 2030= 20 13:51, 21 07:31, 22 23:27, 21 20:09 2031= 20 19:41, 21 13:17, 23 05:15, 22 01:56 2032= 20 01:23, 20 19:09, 22 11:11, 21 07:57 2033= 20 07:23, 21 01:01, 22 16:52, 21 13:45 2034= 20 13:18, 21 06:45, 22 22:41, 21 19:35 2035= 20 19:03, 21 12:33, 23 04:39, 22 01:31 2036= 20 01:02, 20 18:31, 22 10:23, 21 07:12 2037= 20 06:50, 21 00:22, 22 16:13, 21 13:08 2038= 20 12:40, 21 06:09, 22 22:02, 21 19:01 2039= 20 18:32, 21 11:58, 23 03:50, 22 00:41 2040= 20 00:11, 20 17:46, 22 09:44, 21 06:33 2041= 20 06:07, 20 23:37, 22 15:27, 21 12:19 2042= 20 11:53, 21 05:16, 22 21:11, 21 18:04 2043= 20 17:29, 21 10:59, 23 03:07, 22 00:02 2044= 19 23:20, 20 16:50, 22 08:47, 21 05:43 2045= 20 05:08, 20 22:34, 22 14:33, 21 11:36 2046= 20 10:58, 21 04:15, 22 20:22, 21 17:28 2047= 20 16:52, 21 10:02, 23 02:07, 21 23:07 2048= 19 22:34, 20 15:54, 22 08:01, 21 05:02 2049= 20 04:28, 20 21:47, 22 13:42, 21 10:51 2050= 20 10:20, 21 03:33, 22 19:29, 21 16:39 2051= 20 15:58, 21 09:17, 23 01:26, 21 22:33 2052= 19 21:56, 20 15:16, 22 07:16, 21 04:18 2053= 20 03:46, 20 21:03, 22 13:05, 21 10:09 2054= 20 09:35, 21 02:47, 22 19:00, 21 16:10 2055= 20 15:28, 21 08:39, 23 00:48, 21 21:56 2056= 19 21:11, 20 14:29, 22 06:40, 21 03:52 2057= 20 03:08, 20 20:19, 22 12:23, 21 09:42 2058= 20 09:04, 21 02:03, 22 18:07, 21 15:24 2059= 20 14:44, 21 07:47, 23 00:03, 21 21:18 2060= 19 20:37, 20 13:44, 22 05:47, 21 03:00 2061= 20 02:26, 20 19:33, 22 11:31, 21 08:49 2062= 20 08:07, 21 01:10, 22 17:19, 21 14:42 2063= 20 13:59, 21 07:02, 22 23:08, 21 20:22 2064= 19 19:40, 20 12:47, 22 04:58, 21 02:10 2065= 20 01:27, 20 18:31, 22 10:41, 21 07:59 2066= 20 07:19, 21 00:16, 22 16:27, 21 13:45 2067= 20 12:55, 21 05:56, 22 22:20, 21 19:44 2068= 19 18:51, 20 11:55, 22 04:09, 21 01:34 2069= 20 00:44, 20 17:40, 22 09:51, 21 07:21 2070= 20 06:35, 20 23:22, 22 15:45, 21 13:19 2071= 20 12:36, 21 05:21, 22 21:39, 21 19:05 2072= 19 18:19, 20 11:12, 22 03:26, 21 00:54 2073= 20 00:12, 20 17:06, 22 09:14, 21 06:50 2074= 20 06:09, 20 22:59, 22 15:04, 21 12:36 2075= 20 11:48, 21 04:41, 22 21:00, 21 18:28 2076= 19 17:37, 20 10:35, 22 02:48, 21 00:12 2077= 19 23:30, 20 16:23, 22 08:35, 21 06:00 2078= 20 05:11, 20 21:58, 22 14:25, 21 11:59 2079= 20 11:03, 21 03:51, 22 20:15, 21 17:46 2080= 19 16:43, 20 09:33, 22 01:55, 20 23:31 2081= 19 22:34, 20 15:16, 22 07:38, 21 05:22 2082= 20 04:32, 20 21:04, 22 13:24, 21 11:06 2083= 20 10:08, 21 02:41, 22 19:10, 21 16:51 2084= 19 15:58, 20 08:39, 22 00:58, 20 22:40 2085= 19 21:53, 20 14:33, 22 06:43, 21 04:29 2086= 20 03:36, 20 20:11, 22 12:33, 21 10:24 2087= 20 09:27, 21 02:05, 22 18:27, 21 16:07 2088= 19 15:16, 20 07:57, 22 00:18, 20 21:56 2089= 19 21:07, 20 13:43, 22 06:07, 21 03:53 2090= 20 03:03, 20 19:37, 22 12:01, 21 09:45 2091= 20 08:40, 21 01:17, 22 17:49, 21 15:37 2092= 19 14:33, 20 07:14, 21 23:41, 20 21:31 2093= 19 20:35, 20 13:08, 22 05:30, 21 03:21 2094= 20 02:20, 20 18:40, 22 11:15, 21 09:11 2095= 20 08:14, 21 00:38, 22 17:10, 21 15:00 2096= 19 14:03, 20 06:31, 21 22:55, 20 20:46 2097= 19 19:49, 20 12:14, 22 04:37, 21 02:38 2098= 20 01:38, 20 18:01, 22 10:22, 21 08:19 2099= 20 07:17, 20 23:41, 22 16:10, 21 14:04 2100= 20 13:04, 21 05:32, 22 22:00, 21 19:51 EOD my @lines = split(/\n/, $data); foreach (@lines) { my ($year, $rest) = split(/=/, $_); my @tokens = split(/,/, $rest); if ($rest =~ /^ *([^,]+), *([^,]+), *([^,]+), *(.+) *$/s) { my $s1 = "$year-03-$1:00 GMT"; my $s2 = "$year-06-$2:00 GMT"; my $s3 = "$year-09-$3:00 GMT"; my $s4 = "$year-12-$4:00 GMT"; # print("$s1, $s2, $s3, $s4\n"); my $t1 = str2time($s1); my $t2 = str2time($s2); my $t3 = str2time($s3); my $t4 = str2time($s4); # print("$t1, $t2, $t3, $t4\n"); push(@equinoxesAndSolstices, ($t1, $t2, $t3, $t4)); } } }
如果你运行这个程序,你会得到下面的结果:
herong> perl Equinoxes-and-Solstices.pl GMT=2002-03-20 19:16:00 GMT, WST=2002-03-21 03:16:00 WST Year Mean=31556925.1874707, This Year=31556700, Diff=-4 minutes Half Mean=15778463, This Half=15451860, Diff=-91 hours Quarter Mean=7889231, This Quarter=7689240, Diff=-56 hours GMT=2002-06-21 13:25:00 GMT, WST=2002-06-21 21:25:00 WST Year Mean=31556925.1874707, This Year=31556820, Diff=-2 minutes Half Mean=15778463, This Half=15703380, Diff=-21 hours Quarter Mean=7889231, This Quarter=8014140, Diff=35 hours GMT=2002-09-23 04:56:00 GMT, WST=2002-09-23 12:56:00 WST Year Mean=31556925.1874707, This Year=31557060, Diff=2 minutes Half Mean=15778463, This Half=16105200, Diff=91 hours Quarter Mean=7889231, This Quarter=8091060, Diff=56 hours GMT=2002-12-22 01:15:00 GMT, WST=2002-12-22 09:15:00 WST Year Mean=31556925.1874707, This Year=31557180, Diff=4 minutes Half Mean=15778463, This Half=15853800, Diff=21 hours Quarter Mean=7889231, This Quarter=7762740, Diff=-35 hours GMT=2003-03-21 01:00:00 GMT, WST=2003-03-21 09:00:00 WST Year Mean=31556925.1874707, This Year=31556640, Diff=-5 minutes Half Mean=15778463, This Half=15451440, Diff=-91 hours Quarter Mean=7889231, This Quarter=7688700, Diff=-56 hours GMT=2003-06-21 19:11:00 GMT, WST=2003-06-22 03:11:00 WST Year Mean=31556925.1874707, This Year=31556760, Diff=-3 minutes Half Mean=15778463, This Half=15702960, Diff=-21 hours Quarter Mean=7889231, This Quarter=8014260, Diff=35 hours GMT=2003-09-23 10:47:00 GMT, WST=2003-09-23 18:47:00 WST Year Mean=31556925.1874707, This Year=31557060, Diff=2 minutes Half Mean=15778463, This Half=16105620, Diff=91 hours Quarter Mean=7889231, This Quarter=8091360, Diff=56 hours GMT=2003-12-22 07:04:00 GMT, WST=2003-12-22 15:04:00 WST Year Mean=31556925.1874707, This Year=31556940, Diff=0 minutes Half Mean=15778463, This Half=15853980, Diff=21 hours Quarter Mean=7889231, This Quarter=7762620, Diff=-35 hours GMT=2004-03-20 06:49:00 GMT, WST=2004-03-20 14:49:00 WST Year Mean=31556925.1874707, This Year=31556940, Diff=0 minutes Half Mean=15778463, This Half=15451320, Diff=-91 hours Quarter Mean=7889231, This Quarter=7688700, Diff=-56 hours GMT=2004-06-21 00:57:00 GMT, WST=2004-06-21 08:57:00 WST Year Mean=31556925.1874707, This Year=31556760, Diff=-3 minutes Half Mean=15778463, This Half=15702780, Diff=-21 hours Quarter Mean=7889231, This Quarter=8014080, Diff=35 hours GMT=2004-09-22 16:30:00 GMT, WST=2004-09-23 00:30:00 WST Year Mean=31556925.1874707, This Year=31556580, Diff=-6 minutes Half Mean=15778463, This Half=16105260, Diff=91 hours Quarter Mean=7889231, This Quarter=8091180, Diff=56 hours GMT=2004-12-21 12:42:00 GMT, WST=2004-12-21 20:42:00 WST Year Mean=31556925.1874707, This Year=31556280, Diff=-11 minutes Half Mean=15778463, This Half=15853500, Diff=21 hours Quarter Mean=7889231, This Quarter=7762320, Diff=-35 hours ... GMT=2099-03-20 07:17:00 GMT, WST=2099-03-20 15:17:00 WST Year Mean=31556925.1874707, This Year=31556340, Diff=-10 minutes Half Mean=15778463, This Half=15454500, Diff=-90 hours Quarter Mean=7889231, This Quarter=7685880, Diff=-56 hours GMT=2099-06-20 23:41:00 GMT, WST=2099-06-21 07:41:00 WST Year Mean=31556925.1874707, This Year=31556400, Diff=-9 minutes Half Mean=15778463, This Half=15693720, Diff=-24 hours Quarter Mean=7889231, This Quarter=8007840, Diff=33 hours GMT=2099-09-22 16:10:00 GMT, WST=2099-09-23 00:10:00 WST Year Mean=31556925.1874707, This Year=31556880, Diff=-1 minutes Half Mean=15778463, This Half=16102380, Diff=90 hours Quarter Mean=7889231, This Quarter=8094540, Diff=57 hours GMT=2099-12-21 14:04:00 GMT, WST=2099-12-21 22:04:00 WST Year Mean=31556925.1874707, This Year=31556700, Diff=-4 minutes Half Mean=15778463, This Half=15862980, Diff=23 hours Quarter Mean=7889231, This Quarter=7768440, Diff=-34 hours GMT=2100-03-20 13:04:00 GMT, WST=2100-03-20 21:04:00 WST Year Mean=31556925.1874707, This Year=31556820, Diff=-2 minutes Half Mean=15778463, This Half=15454440, Diff=-90 hours Quarter Mean=7889231, This Quarter=7686000, Diff=-56 hours GMT=2100-06-21 05:32:00 GMT, WST=2100-06-21 13:32:00 WST Year Mean=31556925.1874707, This Year=31557060, Diff=2 minutes Half Mean=15778463, This Half=15694080, Diff=-23 hours Quarter Mean=7889231, This Quarter=8008080, Diff=33 hours GMT=2100-09-22 22:00:00 GMT, WST=2100-09-23 06:00:00 WST Year Mean=31556925.1874707, This Year=31557000, Diff=1 minutes Half Mean=15778463, This Half=16102560, Diff=90 hours Quarter Mean=7889231, This Quarter=8094480, Diff=57 hours GMT=2100-12-21 19:51:00 GMT, WST=2100-12-22 03:51:00 WST Year Mean=31556925.1874707, This Year=31556820, Diff=-2 minutes Half Mean=15778463, This Half=15862740, Diff=23 hours Quarter Mean=7889231, This Quarter=7768260, Diff=-34 hours
程序的输出表明:
Table of Contents