Equinoxes, Solstices and Seasons

This section describes Equinoxes, Solstices and Seasons, which are based on the tropical year.

Since the Gregorian calendar year is an approximation of the tropical year, we usually mark the following 4 moments of the tropical year in the the Gregorian calendar to show approxication differences.

The diagram below shows you Sun positions on Equinoxes and Solstices, relative to the Ecliptic Plane and the Equator Plane:

Equinoxes and Solstices
Equinoxes and Solstices

Fred Espenak has presented table of date and time (Greenwich Mean Time) of all Equinoxes and Solstices for the 21st Century (2001-2100) at http://astropixels.com/ephemeris/soleq2001.html. Here are a few example lines from the table:

Solstices and Equinoxes: 2001 to 2050
Greenwich Mean Time (GMT)

Year   Spring Equinox  Summer Solstice   Fall Equinox    Winter Solstice
2001   Mar 20  13:31    Jun 21  07:38    Sep 22  23:05    Dec 21  19:22
2002   Mar 20  19:16    Jun 21  13:25    Sep 23  04:56    Dec 22  01:15
2003   Mar 21  01:00    Jun 21  19:11    Sep 23  10:47    Dec 22  07:04
2004   Mar 20  06:49    Jun 21  00:57    Sep 22  16:30    Dec 21  12:42
2005   Mar 20  12:34    Jun 21  06:46    Sep 22  22:23    Dec 21  18:35
...
2051   Mar 20  15:58    Jun 21  09:17    Sep 23  01:26    Dec 21  22:33
2052   Mar 19  21:56    Jun 20  15:16    Sep 22  07:16    Dec 21  04:18
2053   Mar 20  03:46    Jun 20  21:03    Sep 22  13:05    Dec 21  10:09
2054   Mar 20  09:35    Jun 21  02:47    Sep 22  19:00    Dec 21  16:10
2055   Mar 20  15:28    Jun 21  08:39    Sep 23  00:48    Dec 21  21:56
...
2096   Mar 19  14:03    Jun 20  06:31    Sep 21  22:55    Dec 20  20:46
2097   Mar 19  19:49    Jun 20  12:14    Sep 22  04:37    Dec 21  02:38
2098   Mar 20  01:38    Jun 20  18:01    Sep 22  10:22    Dec 21  08:19
2099   Mar 20  07:17    Jun 20  23:41    Sep 22  16:10    Dec 21  14:04
2100   Mar 20  13:04    Jun 21  05:32    Sep 22  22:00    Dec 21  19:51

By the way, there is no easy ways to calculate Equinoxes and Solstices. The main reason is that the length of a tropical year is not a constant (due to a number of factors) and can vary up to 30 minutes. We can only observe them and predict Equinoxes and Solstices with approximations.

Also note that the earth orbit is not a circle, you can not divide a tropical year equally into 4 parts to determine Equinox and Solstice dates and times.

Here is simple Perl script that reads the Equinox/Solstice data for the 21st Century and verify their intervals.

#- Equinoxes-and-Solstices.pl
#- Copyright (c) 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));
    }
  }

}

If you run the above script, you will get:

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

As you can see from the output:

Table of Contents

 About This Book

Chinese Calendar Background Information

 Astronomical Bases of Calendars

 The Gregorian Calendar

Equinoxes, Solstices and Seasons

 Position of Sun - Longitude Angle

 The Chinese Calendar

 Chinese Calendar Algorithm and Program

 Chinese Calendars: Year 1901 to 1910

 Chinese Calendars: Year 1911 to 1920

 Chinese Calendars: Year 1921 to 1930

 Chinese Calendars: Year 1931 to 1940

 Chinese Calendars: Year 1941 to 1950

 Chinese Calendars: Year 1951 to 1960

 Chinese Calendars: Year 1961 to 1970

 Chinese Calendars: Year 1971 to 1980

 Chinese Calendars: Year 1981 to 1990

 Chinese Calendars: Year 1991 to 2000

 Chinese Calendars: Year 2001 to 2010

 Chinese Calendars: Year 2011 to 2020

 Chinese Calendars: Year 2021 to 2030

 Chinese Calendars: Year 2031 to 2040

 Chinese Calendars: Year 2041 to 2050

 Chinese Calendars: Year 2051 to 2060

 Chinese Calendars: Year 2061 to 2070

 Chinese Calendars: Year 2071 to 2080

 Chinese Calendars: Year 2081 to 2090

 Chinese Calendars: Year 2091 to 2100

 References

 Full Version in PDF/EPUB