Hello,
A few weeks ago I submitted a patch to calendar(1) that helped it handle
fifth weekday events and 31st events, and afterward, I noticed that
there were no regression tests. In writing them, I discovered that while
the patch fixed these two particular cases, it broke others. I'll send a
potential fix which passes all the tests in a following email. But
here is a potential set of regressions and comments/suggestions are
appreciated. Are there too many tests? Not enough? Different style
required? Does the patch need to be broken up?
Thanks.
Index: Makefile
===================================================================
RCS file: /home/cvs/src/regress/usr.bin/Makefile,v
retrieving revision 1.32
diff -u -p -r1.32 Makefile
--- Makefile 26 Jul 2015 17:29:41 -0000 1.32
+++ Makefile 28 Jul 2016 08:25:26 -0000
@@ -1,7 +1,7 @@
# $OpenBSD: Makefile,v 1.32 2015/07/26 17:29:41 zhuk Exp $
# $NetBSD: Makefile,v 1.1 1997/12/30 23:27:11 cgd Exp $
-SUBDIR+= basename bc dc diff diff3 dirname doas file grep gzip
+SUBDIR+= basename bc calendar dc diff diff3 dirname doas file grep gzip
SUBDIR+= m4 mandoc openssl sdiff sed signify sort tsort
SUBDIR+= xargs
Index: calendar/20160101.wdout
===================================================================
RCS file: calendar/20160101.wdout
diff -N calendar/20160101.wdout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160101.wdout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,8 @@
+Jan 01* First Friday
+Jan 01* First Friday in Jan
+Jan 02* First Saturday
+Jan 02* First Saturday in Jan
+Jan 03* First Sunday
+Jan 03* First Sunday in Jan
+Jan 04* First Monday
+Jan 04* First Monday in Jan
Index: calendar/20160114.manout
===================================================================
RCS file: calendar/20160114.manout
diff -N calendar/20160114.manout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160114.manout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,2 @@
+Jan 14* Every Thursday
+Jan 15* 15th of every month
Index: calendar/20160115.wdout
===================================================================
RCS file: calendar/20160115.wdout
diff -N calendar/20160115.wdout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160115.wdout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,8 @@
+Jan 15* Third Friday
+Jan 15* Third Friday in Jan
+Jan 16* Third Saturday
+Jan 16* Third Saturday in Jan
+Jan 17* Third Sunday
+Jan 17* Third Sunday in Jan
+Jan 18* Third Monday
+Jan 18* Third Monday in Jan
Index: calendar/20160129.wdout
===================================================================
RCS file: calendar/20160129.wdout
diff -N calendar/20160129.wdout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160129.wdout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,9 @@
+Jan 29* Fifth Friday
+Jan 29* Fifth Friday in Jan
+Jan 30* Fifth Saturday
+Jan 30* Fifth Saturday in Jan
+Jan 31* Fifth Sunday
+Jan 31* Fifth Sunday in Jan
+Feb 01* First Monday
+Feb 01* First Monday in Feb
+Feb 01* Fifth Monday in Jan
Index: calendar/20160131.monout
===================================================================
RCS file: calendar/20160131.monout
diff -N calendar/20160131.monout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160131.monout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,3 @@
+Jan 31* Every Sunday
+Feb 01* First of Month
+Feb 01* Every Monday
Index: calendar/20160201.wdout
===================================================================
RCS file: calendar/20160201.wdout
diff -N calendar/20160201.wdout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160201.wdout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,6 @@
+Feb 01* First Monday
+Feb 01* First Monday in Feb
+Feb 01* Fifth Monday in Jan
+Feb 02* First Tuesday
+Feb 02* First Tuesday in Feb
+Feb 02* Fifth Tuesday in Jan
Index: calendar/20160203.wdout
===================================================================
RCS file: calendar/20160203.wdout
diff -N calendar/20160203.wdout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160203.wdout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,6 @@
+Feb 03* First Wednesday
+Feb 03* First Wednesday in Feb
+Feb 03* Fifth Wednesday in Jan
+Feb 04* First Thursday
+Feb 04* First Thursday in Feb
+Feb 04* Fifth Thursday in Jan
Index: calendar/20160229.wdout
===================================================================
RCS file: calendar/20160229.wdout
diff -N calendar/20160229.wdout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160229.wdout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,5 @@
+Feb 29* Fifth Monday
+Feb 29* Fifth Monday in Feb
+Mar 01* First Tuesday
+Mar 01* First Tuesday in Mar
+Mar 01* Fifth Tuesday in Feb
Index: calendar/20160301.wdout
===================================================================
RCS file: calendar/20160301.wdout
diff -N calendar/20160301.wdout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160301.wdout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,6 @@
+Mar 01* First Tuesday
+Mar 01* First Tuesday in Mar
+Mar 01* Fifth Tuesday in Feb
+Mar 02* First Wednesday
+Mar 02* First Wednesday in Mar
+Mar 02* Fifth Wednesday in Feb
Index: calendar/20160304.wdout
===================================================================
RCS file: calendar/20160304.wdout
diff -N calendar/20160304.wdout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160304.wdout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,11 @@
+Mar 04* First Friday
+Mar 04* First Friday in Mar
+Mar 04* Fifth Friday in Feb
+Mar 05* First Saturday
+Mar 05* First Saturday in Mar
+Mar 05* Fifth Saturday in Feb
+Mar 06* First Sunday
+Mar 06* First Sunday in Mar
+Mar 06* Fifth Sunday in Feb
+Mar 07* First Monday
+Mar 07* First Monday in Mar
Index: calendar/20160324.edout
===================================================================
RCS file: calendar/20160324.edout
diff -N calendar/20160324.edout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160324.edout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1 @@
+Mar 25* Good Friday
Index: calendar/20160325.edout
===================================================================
RCS file: calendar/20160325.edout
diff -N calendar/20160325.edout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160325.edout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,2 @@
+Mar 25* Good Friday
+Mar 27* Easter
Index: calendar/20160326.edout
===================================================================
RCS file: calendar/20160326.edout
diff -N calendar/20160326.edout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160326.edout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1 @@
+Mar 27* Easter
Index: calendar/20160327.edout
===================================================================
RCS file: calendar/20160327.edout
diff -N calendar/20160327.edout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160327.edout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1 @@
+Mar 27* Easter
Index: calendar/20160331.monout
===================================================================
RCS file: calendar/20160331.monout
diff -N calendar/20160331.monout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160331.monout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,3 @@
+Mar 31* Every Thursday
+Apr 01* First of Month
+Apr 01* Every Friday
Index: calendar/20160422.manout
===================================================================
RCS file: calendar/20160422.manout
diff -N calendar/20160422.manout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160422.manout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,2 @@
+Apr 24* Last Sunday in April,
+ summer time in Europe
Index: calendar/20160423.manout
===================================================================
RCS file: calendar/20160423.manout
diff -N calendar/20160423.manout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160423.manout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,2 @@
+Apr 24* Last Sunday in April,
+ summer time in Europe
Index: calendar/20160424.manout
===================================================================
RCS file: calendar/20160424.manout
diff -N calendar/20160424.manout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160424.manout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,2 @@
+Apr 24* Last Sunday in April,
+ summer time in Europe
Index: calendar/20160429.edout
===================================================================
RCS file: calendar/20160429.edout
diff -N calendar/20160429.edout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160429.edout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1 @@
+May 01* Orthodox Easter
Index: calendar/20160430.edout
===================================================================
RCS file: calendar/20160430.edout
diff -N calendar/20160430.edout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160430.edout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1 @@
+May 01* Orthodox Easter
Index: calendar/20160501.edout
===================================================================
RCS file: calendar/20160501.edout
diff -N calendar/20160501.edout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160501.edout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1 @@
+May 01* Orthodox Easter
Index: calendar/20160506.manout
===================================================================
RCS file: calendar/20160506.manout
diff -N calendar/20160506.manout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160506.manout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1 @@
+May 08* second Sunday in May
Index: calendar/20160507.manout
===================================================================
RCS file: calendar/20160507.manout
diff -N calendar/20160507.manout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160507.manout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1 @@
+May 08* second Sunday in May
Index: calendar/20160508.manout
===================================================================
RCS file: calendar/20160508.manout
diff -N calendar/20160508.manout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160508.manout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1 @@
+May 08* second Sunday in May
Index: calendar/20160531.monout
===================================================================
RCS file: calendar/20160531.monout
diff -N calendar/20160531.monout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160531.monout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,3 @@
+May 31* Every Tuesday
+Jun 01* First of Month
+Jun 01* Every Wednesday
Index: calendar/20160601.manout
===================================================================
RCS file: calendar/20160601.manout
diff -N calendar/20160601.manout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160601.manout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,2 @@
+Jun 01 Every June 1st
+Jun 02* Every Thursday
Index: calendar/20160614.manout
===================================================================
RCS file: calendar/20160614.manout
diff -N calendar/20160614.manout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160614.manout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,4 @@
+Jun 15 June 15 (6/15)
+Jun 15 June 15 (Jun. 15)
+Jun 15 June 15 (15 June)
+Jun 15* 15th of every month
Index: calendar/20160615.manout
===================================================================
RCS file: calendar/20160615.manout
diff -N calendar/20160615.manout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160615.manout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,5 @@
+Jun 15 June 15 (6/15)
+Jun 15 June 15 (Jun. 15)
+Jun 15 June 15 (15 June)
+Jun 15* 15th of every month
+Jun 16* Every Thursday
Index: calendar/20160630.monout
===================================================================
RCS file: calendar/20160630.monout
diff -N calendar/20160630.monout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160630.monout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,3 @@
+Jun 30* Every Thursday
+Jul 01* First of Month
+Jul 01* Every Friday
Index: calendar/20160701.wdout
===================================================================
RCS file: calendar/20160701.wdout
diff -N calendar/20160701.wdout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160701.wdout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,12 @@
+Jul 01* First Friday
+Jul 01* First Friday in Jul
+Jul 01* Fifth Friday in Jun
+Jul 02* First Saturday
+Jul 02* First Saturday in Jul
+Jul 02* Fifth Saturday in Jun
+Jul 03* First Sunday
+Jul 03* First Sunday in Jul
+Jul 03* Fifth Sunday in Jun
+Jul 04* First Monday
+Jul 04* First Monday in Jul
+Jul 04* Fifth Monday in Jun
Index: calendar/20160729.monout
===================================================================
RCS file: calendar/20160729.monout
diff -N calendar/20160729.monout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160729.monout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,5 @@
+Jul 29* Every Friday
+Jul 30* Every Saturday
+Jul 31* Every Sunday
+Aug 01* First of Month
+Aug 01* Every Monday
Index: calendar/20160731.monout
===================================================================
RCS file: calendar/20160731.monout
diff -N calendar/20160731.monout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160731.monout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,3 @@
+Jul 31* Every Sunday
+Aug 01* First of Month
+Aug 01* Every Monday
Index: calendar/20160831.manout
===================================================================
RCS file: calendar/20160831.manout
diff -N calendar/20160831.manout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160831.manout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1 @@
+Sep 01* Every Thursday
Index: calendar/20160902.wdout
===================================================================
RCS file: calendar/20160902.wdout
diff -N calendar/20160902.wdout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160902.wdout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,11 @@
+Sep 02* First Friday
+Sep 02* First Friday in Sep
+Sep 02* Fifth Friday in Aug
+Sep 03* First Saturday
+Sep 03* First Saturday in Sep
+Sep 03* Fifth Saturday in Aug
+Sep 04* First Sunday
+Sep 04* First Sunday in Sep
+Sep 04* Fifth Sunday in Aug
+Sep 05* First Monday
+Sep 05* First Monday in Sep
Index: calendar/20160915.wdout
===================================================================
RCS file: calendar/20160915.wdout
diff -N calendar/20160915.wdout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160915.wdout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,4 @@
+Sep 15* Third Thursday
+Sep 15* Third Thursday in Sep
+Sep 16* Third Friday
+Sep 16* Third Friday in Sep
Index: calendar/20160930.monout
===================================================================
RCS file: calendar/20160930.monout
diff -N calendar/20160930.monout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20160930.monout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,5 @@
+Sep 30* Every Friday
+Oct 01* First of Month
+Oct 01* Every Saturday
+Oct 02* Every Sunday
+Oct 03* Every Monday
Index: calendar/20161030.wdout
===================================================================
RCS file: calendar/20161030.wdout
diff -N calendar/20161030.wdout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20161030.wdout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,4 @@
+Oct 30* Fifth Sunday
+Oct 30* Fifth Sunday in Oct
+Oct 31* Fifth Monday
+Oct 31* Fifth Monday in Oct
Index: calendar/20161031.wdout
===================================================================
RCS file: calendar/20161031.wdout
diff -N calendar/20161031.wdout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20161031.wdout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,5 @@
+Oct 31* Fifth Monday
+Oct 31* Fifth Monday in Oct
+Nov 01* First Tuesday
+Nov 01* First Tuesday in Nov
+Nov 01* Fifth Tuesday in Oct
Index: calendar/20161130.manout
===================================================================
RCS file: calendar/20161130.manout
diff -N calendar/20161130.manout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20161130.manout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1 @@
+Dec 01* Every Thursday
Index: calendar/20161202.wdout
===================================================================
RCS file: calendar/20161202.wdout
diff -N calendar/20161202.wdout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20161202.wdout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,12 @@
+Dec 02* First Friday
+Dec 02* First Friday in Dec
+Dec 02* Fifth Friday in Nov
+Dec 03* First Saturday
+Dec 03* First Saturday in Dec
+Dec 03* Fifth Saturday in Nov
+Dec 04* First Sunday
+Dec 04* First Sunday in Dec
+Dec 04* Fifth Sunday in Nov
+Dec 05* First Monday
+Dec 05* First Monday in Dec
+Dec 05* Fifth Monday in Nov
Index: calendar/20161215.manout
===================================================================
RCS file: calendar/20161215.manout
diff -N calendar/20161215.manout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20161215.manout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,2 @@
+Dec 15* Every Thursday
+Dec 15* 15th of every month
Index: calendar/20161230.wdout
===================================================================
RCS file: calendar/20161230.wdout
diff -N calendar/20161230.wdout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20161230.wdout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,10 @@
+Dec 30* Fifth Friday
+Dec 30* Fifth Friday in Dec
+Dec 31* Fifth Saturday
+Dec 31* Fifth Saturday in Dec
+Jan 01* First Sunday
+Jan 01* First Sunday in Jan
+Jan 01* Fifth Sunday in Dec
+Jan 02* First Monday
+Jan 02* First Monday in Jan
+Jan 02* Fifth Monday in Dec
Index: calendar/20161231.wdout
===================================================================
RCS file: calendar/20161231.wdout
diff -N calendar/20161231.wdout
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/20161231.wdout 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,5 @@
+Dec 31* Fifth Saturday
+Dec 31* Fifth Saturday in Dec
+Jan 01* First Sunday
+Jan 01* First Sunday in Jan
+Jan 01* Fifth Sunday in Dec
Index: calendar/Makefile
===================================================================
RCS file: calendar/Makefile
diff -N calendar/Makefile
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/Makefile 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,19 @@
+FILES?!= ls ${.CURDIR}/*.wdout ${.CURDIR}/*.edout ${.CURDIR}/*.manout \
+ ${.CURDIR}/*.monout
+
+CALENDAR?= calendar
+IN= ${.CURDIR}/in
+OUT= ${.CURDIR}/$@
+DATE= ${f:C|.*/||:C/\..*//}
+
+.for f in ${FILES}
+REGRESS_TARGETS+=${f:C|.*/||}
+.endfor
+.for f in ${FILES}
+${f:C|.*/||}:
+ @${CALENDAR} -f ${.CURDIR}/${f:C|.*/||:C/.*\.//}.in -t
${f:C|.*/||:C/\..*//} | diff ${OUT} -
+.endfor
+
+.PHONY: ${REGRESS_TARGETS}
+
+.include <bsd.regress.mk>
Index: calendar/edout.in
===================================================================
RCS file: calendar/edout.in
diff -N calendar/edout.in
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/edout.in 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,4 @@
+Easter Easter
+Easter=Ostern
+Ostern-2 Good Friday
+Paskha Orthodox Easter
Index: calendar/manout.in
===================================================================
RCS file: calendar/manout.in
diff -N calendar/manout.in
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/manout.in 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,9 @@
+6/15 June 15 (6/15)
+Jun. 15 June 15 (Jun. 15)
+15 June June 15 (15 June)
+Thursday Every Thursday
+June Every June 1st
+15 * 15th of every month
+May Sun+2 second Sunday in May
+04/SunLast Last Sunday in April,
+ summer time in Europe
Index: calendar/monout.in
===================================================================
RCS file: calendar/monout.in
diff -N calendar/monout.in
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/monout.in 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,8 @@
+* First of Month
+Sunday Every Sunday
+Monday Every Monday
+Tuesday Every Tuesday
+Wednesday Every Wednesday
+Thursday Every Thursday
+Friday Every Friday
+Saturday Every Saturday
Index: calendar/wdout.in
===================================================================
RCS file: calendar/wdout.in
diff -N calendar/wdout.in
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ calendar/wdout.in 28 Jul 2016 08:25:26 -0000
@@ -0,0 +1,455 @@
+Sunday+1 First Sunday
+01/Sunday+1 First Sunday in Jan
+02/Sunday+1 First Sunday in Feb
+03/Sunday+1 First Sunday in Mar
+04/Sunday+1 First Sunday in Apr
+05/Sunday+1 First Sunday in May
+06/Sunday+1 First Sunday in Jun
+07/Sunday+1 First Sunday in Jul
+08/Sunday+1 First Sunday in Aug
+09/Sunday+1 First Sunday in Sep
+10/Sunday+1 First Sunday in Oct
+11/Sunday+1 First Sunday in Nov
+12/Sunday+1 First Sunday in Dec
+Monday+1 First Monday
+01/Monday+1 First Monday in Jan
+02/Monday+1 First Monday in Feb
+03/Monday+1 First Monday in Mar
+04/Monday+1 First Monday in Apr
+05/Monday+1 First Monday in May
+06/Monday+1 First Monday in Jun
+07/Monday+1 First Monday in Jul
+08/Monday+1 First Monday in Aug
+09/Monday+1 First Monday in Sep
+10/Monday+1 First Monday in Oct
+11/Monday+1 First Monday in Nov
+12/Monday+1 First Monday in Dec
+Tuesday+1 First Tuesday
+01/Tuesday+1 First Tuesday in Jan
+02/Tuesday+1 First Tuesday in Feb
+03/Tuesday+1 First Tuesday in Mar
+04/Tuesday+1 First Tuesday in Apr
+05/Tuesday+1 First Tuesday in May
+06/Tuesday+1 First Tuesday in Jun
+07/Tuesday+1 First Tuesday in Jul
+08/Tuesday+1 First Tuesday in Aug
+09/Tuesday+1 First Tuesday in Sep
+10/Tuesday+1 First Tuesday in Oct
+11/Tuesday+1 First Tuesday in Nov
+12/Tuesday+1 First Tuesday in Dec
+Wednesday+1 First Wednesday
+01/Wednesday+1 First Wednesday in Jan
+02/Wednesday+1 First Wednesday in Feb
+03/Wednesday+1 First Wednesday in Mar
+04/Wednesday+1 First Wednesday in Apr
+05/Wednesday+1 First Wednesday in May
+06/Wednesday+1 First Wednesday in Jun
+07/Wednesday+1 First Wednesday in Jul
+08/Wednesday+1 First Wednesday in Aug
+09/Wednesday+1 First Wednesday in Sep
+10/Wednesday+1 First Wednesday in Oct
+11/Wednesday+1 First Wednesday in Nov
+12/Wednesday+1 First Wednesday in Dec
+Thursday+1 First Thursday
+01/Thursday+1 First Thursday in Jan
+02/Thursday+1 First Thursday in Feb
+03/Thursday+1 First Thursday in Mar
+04/Thursday+1 First Thursday in Apr
+05/Thursday+1 First Thursday in May
+06/Thursday+1 First Thursday in Jun
+07/Thursday+1 First Thursday in Jul
+08/Thursday+1 First Thursday in Aug
+09/Thursday+1 First Thursday in Sep
+10/Thursday+1 First Thursday in Oct
+11/Thursday+1 First Thursday in Nov
+12/Thursday+1 First Thursday in Dec
+Friday+1 First Friday
+01/Friday+1 First Friday in Jan
+02/Friday+1 First Friday in Feb
+03/Friday+1 First Friday in Mar
+04/Friday+1 First Friday in Apr
+05/Friday+1 First Friday in May
+06/Friday+1 First Friday in Jun
+07/Friday+1 First Friday in Jul
+08/Friday+1 First Friday in Aug
+09/Friday+1 First Friday in Sep
+10/Friday+1 First Friday in Oct
+11/Friday+1 First Friday in Nov
+12/Friday+1 First Friday in Dec
+Saturday+1 First Saturday
+01/Saturday+1 First Saturday in Jan
+02/Saturday+1 First Saturday in Feb
+03/Saturday+1 First Saturday in Mar
+04/Saturday+1 First Saturday in Apr
+05/Saturday+1 First Saturday in May
+06/Saturday+1 First Saturday in Jun
+07/Saturday+1 First Saturday in Jul
+08/Saturday+1 First Saturday in Aug
+09/Saturday+1 First Saturday in Sep
+10/Saturday+1 First Saturday in Oct
+11/Saturday+1 First Saturday in Nov
+12/Saturday+1 First Saturday in Dec
+Sunday+2 Second Sunday
+01/Sunday+2 Second Sunday in Jan
+02/Sunday+2 Second Sunday in Feb
+03/Sunday+2 Second Sunday in Mar
+04/Sunday+2 Second Sunday in Apr
+05/Sunday+2 Second Sunday in May
+06/Sunday+2 Second Sunday in Jun
+07/Sunday+2 Second Sunday in Jul
+08/Sunday+2 Second Sunday in Aug
+09/Sunday+2 Second Sunday in Sep
+10/Sunday+2 Second Sunday in Oct
+11/Sunday+2 Second Sunday in Nov
+12/Sunday+2 Second Sunday in Dec
+Monday+2 Second Monday
+01/Monday+2 Second Monday in Jan
+02/Monday+2 Second Monday in Feb
+03/Monday+2 Second Monday in Mar
+04/Monday+2 Second Monday in Apr
+05/Monday+2 Second Monday in May
+06/Monday+2 Second Monday in Jun
+07/Monday+2 Second Monday in Jul
+08/Monday+2 Second Monday in Aug
+09/Monday+2 Second Monday in Sep
+10/Monday+2 Second Monday in Oct
+11/Monday+2 Second Monday in Nov
+12/Monday+2 Second Monday in Dec
+Tuesday+2 Second Tuesday
+01/Tuesday+2 Second Tuesday in Jan
+02/Tuesday+2 Second Tuesday in Feb
+03/Tuesday+2 Second Tuesday in Mar
+04/Tuesday+2 Second Tuesday in Apr
+05/Tuesday+2 Second Tuesday in May
+06/Tuesday+2 Second Tuesday in Jun
+07/Tuesday+2 Second Tuesday in Jul
+08/Tuesday+2 Second Tuesday in Aug
+09/Tuesday+2 Second Tuesday in Sep
+10/Tuesday+2 Second Tuesday in Oct
+11/Tuesday+2 Second Tuesday in Nov
+12/Tuesday+2 Second Tuesday in Dec
+Wednesday+2 Second Wednesday
+01/Wednesday+2 Second Wednesday in Jan
+02/Wednesday+2 Second Wednesday in Feb
+03/Wednesday+2 Second Wednesday in Mar
+04/Wednesday+2 Second Wednesday in Apr
+05/Wednesday+2 Second Wednesday in May
+06/Wednesday+2 Second Wednesday in Jun
+07/Wednesday+2 Second Wednesday in Jul
+08/Wednesday+2 Second Wednesday in Aug
+09/Wednesday+2 Second Wednesday in Sep
+10/Wednesday+2 Second Wednesday in Oct
+11/Wednesday+2 Second Wednesday in Nov
+12/Wednesday+2 Second Wednesday in Dec
+Thursday+2 Second Thursday
+01/Thursday+2 Second Thursday in Jan
+02/Thursday+2 Second Thursday in Feb
+03/Thursday+2 Second Thursday in Mar
+04/Thursday+2 Second Thursday in Apr
+05/Thursday+2 Second Thursday in May
+06/Thursday+2 Second Thursday in Jun
+07/Thursday+2 Second Thursday in Jul
+08/Thursday+2 Second Thursday in Aug
+09/Thursday+2 Second Thursday in Sep
+10/Thursday+2 Second Thursday in Oct
+11/Thursday+2 Second Thursday in Nov
+12/Thursday+2 Second Thursday in Dec
+Friday+2 Second Friday
+01/Friday+2 Second Friday in Jan
+02/Friday+2 Second Friday in Feb
+03/Friday+2 Second Friday in Mar
+04/Friday+2 Second Friday in Apr
+05/Friday+2 Second Friday in May
+06/Friday+2 Second Friday in Jun
+07/Friday+2 Second Friday in Jul
+08/Friday+2 Second Friday in Aug
+09/Friday+2 Second Friday in Sep
+10/Friday+2 Second Friday in Oct
+11/Friday+2 Second Friday in Nov
+12/Friday+2 Second Friday in Dec
+Saturday+2 Second Saturday
+01/Saturday+2 Second Saturday in Jan
+02/Saturday+2 Second Saturday in Feb
+03/Saturday+2 Second Saturday in Mar
+04/Saturday+2 Second Saturday in Apr
+05/Saturday+2 Second Saturday in May
+06/Saturday+2 Second Saturday in Jun
+07/Saturday+2 Second Saturday in Jul
+08/Saturday+2 Second Saturday in Aug
+09/Saturday+2 Second Saturday in Sep
+10/Saturday+2 Second Saturday in Oct
+11/Saturday+2 Second Saturday in Nov
+12/Saturday+2 Second Saturday in Dec
+Sunday+3 Third Sunday
+01/Sunday+3 Third Sunday in Jan
+02/Sunday+3 Third Sunday in Feb
+03/Sunday+3 Third Sunday in Mar
+04/Sunday+3 Third Sunday in Apr
+05/Sunday+3 Third Sunday in May
+06/Sunday+3 Third Sunday in Jun
+07/Sunday+3 Third Sunday in Jul
+08/Sunday+3 Third Sunday in Aug
+09/Sunday+3 Third Sunday in Sep
+10/Sunday+3 Third Sunday in Oct
+11/Sunday+3 Third Sunday in Nov
+12/Sunday+3 Third Sunday in Dec
+Monday+3 Third Monday
+01/Monday+3 Third Monday in Jan
+02/Monday+3 Third Monday in Feb
+03/Monday+3 Third Monday in Mar
+04/Monday+3 Third Monday in Apr
+05/Monday+3 Third Monday in May
+06/Monday+3 Third Monday in Jun
+07/Monday+3 Third Monday in Jul
+08/Monday+3 Third Monday in Aug
+09/Monday+3 Third Monday in Sep
+10/Monday+3 Third Monday in Oct
+11/Monday+3 Third Monday in Nov
+12/Monday+3 Third Monday in Dec
+Tuesday+3 Third Tuesday
+01/Tuesday+3 Third Tuesday in Jan
+02/Tuesday+3 Third Tuesday in Feb
+03/Tuesday+3 Third Tuesday in Mar
+04/Tuesday+3 Third Tuesday in Apr
+05/Tuesday+3 Third Tuesday in May
+06/Tuesday+3 Third Tuesday in Jun
+07/Tuesday+3 Third Tuesday in Jul
+08/Tuesday+3 Third Tuesday in Aug
+09/Tuesday+3 Third Tuesday in Sep
+10/Tuesday+3 Third Tuesday in Oct
+11/Tuesday+3 Third Tuesday in Nov
+12/Tuesday+3 Third Tuesday in Dec
+Wednesday+3 Third Wednesday
+01/Wednesday+3 Third Wednesday in Jan
+02/Wednesday+3 Third Wednesday in Feb
+03/Wednesday+3 Third Wednesday in Mar
+04/Wednesday+3 Third Wednesday in Apr
+05/Wednesday+3 Third Wednesday in May
+06/Wednesday+3 Third Wednesday in Jun
+07/Wednesday+3 Third Wednesday in Jul
+08/Wednesday+3 Third Wednesday in Aug
+09/Wednesday+3 Third Wednesday in Sep
+10/Wednesday+3 Third Wednesday in Oct
+11/Wednesday+3 Third Wednesday in Nov
+12/Wednesday+3 Third Wednesday in Dec
+Thursday+3 Third Thursday
+01/Thursday+3 Third Thursday in Jan
+02/Thursday+3 Third Thursday in Feb
+03/Thursday+3 Third Thursday in Mar
+04/Thursday+3 Third Thursday in Apr
+05/Thursday+3 Third Thursday in May
+06/Thursday+3 Third Thursday in Jun
+07/Thursday+3 Third Thursday in Jul
+08/Thursday+3 Third Thursday in Aug
+09/Thursday+3 Third Thursday in Sep
+10/Thursday+3 Third Thursday in Oct
+11/Thursday+3 Third Thursday in Nov
+12/Thursday+3 Third Thursday in Dec
+Friday+3 Third Friday
+01/Friday+3 Third Friday in Jan
+02/Friday+3 Third Friday in Feb
+03/Friday+3 Third Friday in Mar
+04/Friday+3 Third Friday in Apr
+05/Friday+3 Third Friday in May
+06/Friday+3 Third Friday in Jun
+07/Friday+3 Third Friday in Jul
+08/Friday+3 Third Friday in Aug
+09/Friday+3 Third Friday in Sep
+10/Friday+3 Third Friday in Oct
+11/Friday+3 Third Friday in Nov
+12/Friday+3 Third Friday in Dec
+Saturday+3 Third Saturday
+01/Saturday+3 Third Saturday in Jan
+02/Saturday+3 Third Saturday in Feb
+03/Saturday+3 Third Saturday in Mar
+04/Saturday+3 Third Saturday in Apr
+05/Saturday+3 Third Saturday in May
+06/Saturday+3 Third Saturday in Jun
+07/Saturday+3 Third Saturday in Jul
+08/Saturday+3 Third Saturday in Aug
+09/Saturday+3 Third Saturday in Sep
+10/Saturday+3 Third Saturday in Oct
+11/Saturday+3 Third Saturday in Nov
+12/Saturday+3 Third Saturday in Dec
+Sunday+4 Fourth Sunday
+01/Sunday+4 Fourth Sunday in Jan
+02/Sunday+4 Fourth Sunday in Feb
+03/Sunday+4 Fourth Sunday in Mar
+04/Sunday+4 Fourth Sunday in Apr
+05/Sunday+4 Fourth Sunday in May
+06/Sunday+4 Fourth Sunday in Jun
+07/Sunday+4 Fourth Sunday in Jul
+08/Sunday+4 Fourth Sunday in Aug
+09/Sunday+4 Fourth Sunday in Sep
+10/Sunday+4 Fourth Sunday in Oct
+11/Sunday+4 Fourth Sunday in Nov
+12/Sunday+4 Fourth Sunday in Dec
+Monday+4 Fourth Monday
+01/Monday+4 Fourth Monday in Jan
+02/Monday+4 Fourth Monday in Feb
+03/Monday+4 Fourth Monday in Mar
+04/Monday+4 Fourth Monday in Apr
+05/Monday+4 Fourth Monday in May
+06/Monday+4 Fourth Monday in Jun
+07/Monday+4 Fourth Monday in Jul
+08/Monday+4 Fourth Monday in Aug
+09/Monday+4 Fourth Monday in Sep
+10/Monday+4 Fourth Monday in Oct
+11/Monday+4 Fourth Monday in Nov
+12/Monday+4 Fourth Monday in Dec
+Tuesday+4 Fourth Tuesday
+01/Tuesday+4 Fourth Tuesday in Jan
+02/Tuesday+4 Fourth Tuesday in Feb
+03/Tuesday+4 Fourth Tuesday in Mar
+04/Tuesday+4 Fourth Tuesday in Apr
+05/Tuesday+4 Fourth Tuesday in May
+06/Tuesday+4 Fourth Tuesday in Jun
+07/Tuesday+4 Fourth Tuesday in Jul
+08/Tuesday+4 Fourth Tuesday in Aug
+09/Tuesday+4 Fourth Tuesday in Sep
+10/Tuesday+4 Fourth Tuesday in Oct
+11/Tuesday+4 Fourth Tuesday in Nov
+12/Tuesday+4 Fourth Tuesday in Dec
+Wednesday+4 Fourth Wednesday
+01/Wednesday+4 Fourth Wednesday in Jan
+02/Wednesday+4 Fourth Wednesday in Feb
+03/Wednesday+4 Fourth Wednesday in Mar
+04/Wednesday+4 Fourth Wednesday in Apr
+05/Wednesday+4 Fourth Wednesday in May
+06/Wednesday+4 Fourth Wednesday in Jun
+07/Wednesday+4 Fourth Wednesday in Jul
+08/Wednesday+4 Fourth Wednesday in Aug
+09/Wednesday+4 Fourth Wednesday in Sep
+10/Wednesday+4 Fourth Wednesday in Oct
+11/Wednesday+4 Fourth Wednesday in Nov
+12/Wednesday+4 Fourth Wednesday in Dec
+Thursday+4 Fourth Thursday
+01/Thursday+4 Fourth Thursday in Jan
+02/Thursday+4 Fourth Thursday in Feb
+03/Thursday+4 Fourth Thursday in Mar
+04/Thursday+4 Fourth Thursday in Apr
+05/Thursday+4 Fourth Thursday in May
+06/Thursday+4 Fourth Thursday in Jun
+07/Thursday+4 Fourth Thursday in Jul
+08/Thursday+4 Fourth Thursday in Aug
+09/Thursday+4 Fourth Thursday in Sep
+10/Thursday+4 Fourth Thursday in Oct
+11/Thursday+4 Fourth Thursday in Nov
+12/Thursday+4 Fourth Thursday in Dec
+Friday+4 Fourth Friday
+01/Friday+4 Fourth Friday in Jan
+02/Friday+4 Fourth Friday in Feb
+03/Friday+4 Fourth Friday in Mar
+04/Friday+4 Fourth Friday in Apr
+05/Friday+4 Fourth Friday in May
+06/Friday+4 Fourth Friday in Jun
+07/Friday+4 Fourth Friday in Jul
+08/Friday+4 Fourth Friday in Aug
+09/Friday+4 Fourth Friday in Sep
+10/Friday+4 Fourth Friday in Oct
+11/Friday+4 Fourth Friday in Nov
+12/Friday+4 Fourth Friday in Dec
+Saturday+4 Fourth Saturday
+01/Saturday+4 Fourth Saturday in Jan
+02/Saturday+4 Fourth Saturday in Feb
+03/Saturday+4 Fourth Saturday in Mar
+04/Saturday+4 Fourth Saturday in Apr
+05/Saturday+4 Fourth Saturday in May
+06/Saturday+4 Fourth Saturday in Jun
+07/Saturday+4 Fourth Saturday in Jul
+08/Saturday+4 Fourth Saturday in Aug
+09/Saturday+4 Fourth Saturday in Sep
+10/Saturday+4 Fourth Saturday in Oct
+11/Saturday+4 Fourth Saturday in Nov
+12/Saturday+4 Fourth Saturday in Dec
+Sunday+5 Fifth Sunday
+01/Sunday+5 Fifth Sunday in Jan
+02/Sunday+5 Fifth Sunday in Feb
+03/Sunday+5 Fifth Sunday in Mar
+04/Sunday+5 Fifth Sunday in Apr
+05/Sunday+5 Fifth Sunday in May
+06/Sunday+5 Fifth Sunday in Jun
+07/Sunday+5 Fifth Sunday in Jul
+08/Sunday+5 Fifth Sunday in Aug
+09/Sunday+5 Fifth Sunday in Sep
+10/Sunday+5 Fifth Sunday in Oct
+11/Sunday+5 Fifth Sunday in Nov
+12/Sunday+5 Fifth Sunday in Dec
+Monday+5 Fifth Monday
+01/Monday+5 Fifth Monday in Jan
+02/Monday+5 Fifth Monday in Feb
+03/Monday+5 Fifth Monday in Mar
+04/Monday+5 Fifth Monday in Apr
+05/Monday+5 Fifth Monday in May
+06/Monday+5 Fifth Monday in Jun
+07/Monday+5 Fifth Monday in Jul
+08/Monday+5 Fifth Monday in Aug
+09/Monday+5 Fifth Monday in Sep
+10/Monday+5 Fifth Monday in Oct
+11/Monday+5 Fifth Monday in Nov
+12/Monday+5 Fifth Monday in Dec
+Tuesday+5 Fifth Tuesday
+01/Tuesday+5 Fifth Tuesday in Jan
+02/Tuesday+5 Fifth Tuesday in Feb
+03/Tuesday+5 Fifth Tuesday in Mar
+04/Tuesday+5 Fifth Tuesday in Apr
+05/Tuesday+5 Fifth Tuesday in May
+06/Tuesday+5 Fifth Tuesday in Jun
+07/Tuesday+5 Fifth Tuesday in Jul
+08/Tuesday+5 Fifth Tuesday in Aug
+09/Tuesday+5 Fifth Tuesday in Sep
+10/Tuesday+5 Fifth Tuesday in Oct
+11/Tuesday+5 Fifth Tuesday in Nov
+12/Tuesday+5 Fifth Tuesday in Dec
+Wednesday+5 Fifth Wednesday
+01/Wednesday+5 Fifth Wednesday in Jan
+02/Wednesday+5 Fifth Wednesday in Feb
+03/Wednesday+5 Fifth Wednesday in Mar
+04/Wednesday+5 Fifth Wednesday in Apr
+05/Wednesday+5 Fifth Wednesday in May
+06/Wednesday+5 Fifth Wednesday in Jun
+07/Wednesday+5 Fifth Wednesday in Jul
+08/Wednesday+5 Fifth Wednesday in Aug
+09/Wednesday+5 Fifth Wednesday in Sep
+10/Wednesday+5 Fifth Wednesday in Oct
+11/Wednesday+5 Fifth Wednesday in Nov
+12/Wednesday+5 Fifth Wednesday in Dec
+Thursday+5 Fifth Thursday
+01/Thursday+5 Fifth Thursday in Jan
+02/Thursday+5 Fifth Thursday in Feb
+03/Thursday+5 Fifth Thursday in Mar
+04/Thursday+5 Fifth Thursday in Apr
+05/Thursday+5 Fifth Thursday in May
+06/Thursday+5 Fifth Thursday in Jun
+07/Thursday+5 Fifth Thursday in Jul
+08/Thursday+5 Fifth Thursday in Aug
+09/Thursday+5 Fifth Thursday in Sep
+10/Thursday+5 Fifth Thursday in Oct
+11/Thursday+5 Fifth Thursday in Nov
+12/Thursday+5 Fifth Thursday in Dec
+Friday+5 Fifth Friday
+01/Friday+5 Fifth Friday in Jan
+02/Friday+5 Fifth Friday in Feb
+03/Friday+5 Fifth Friday in Mar
+04/Friday+5 Fifth Friday in Apr
+05/Friday+5 Fifth Friday in May
+06/Friday+5 Fifth Friday in Jun
+07/Friday+5 Fifth Friday in Jul
+08/Friday+5 Fifth Friday in Aug
+09/Friday+5 Fifth Friday in Sep
+10/Friday+5 Fifth Friday in Oct
+11/Friday+5 Fifth Friday in Nov
+12/Friday+5 Fifth Friday in Dec
+Saturday+5 Fifth Saturday
+01/Saturday+5 Fifth Saturday in Jan
+02/Saturday+5 Fifth Saturday in Feb
+03/Saturday+5 Fifth Saturday in Mar
+04/Saturday+5 Fifth Saturday in Apr
+05/Saturday+5 Fifth Saturday in May
+06/Saturday+5 Fifth Saturday in Jun
+07/Saturday+5 Fifth Saturday in Jul
+08/Saturday+5 Fifth Saturday in Aug
+09/Saturday+5 Fifth Saturday in Sep
+10/Saturday+5 Fifth Saturday in Oct
+11/Saturday+5 Fifth Saturday in Nov
+12/Saturday+5 Fifth Saturday in Dec
--
TAI64 timestamp: 400000005799c8fe