You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
3.7 KiB

####################
# Notes #
####################
# For some reason, Omit doesn't like having a day in it's definition.
# You can get around this limitation by using REM without a message.
# If the rem has `SATISFY 1` in its definition, it will always be run and Trigdate
# will be set.
# You can then use Trigdate (or %T) in the omit definition
# https://blog.thechases.com/posts/remind/#omit-weekdays
####################
# New Year #
####################
# New Year is always January 1st
OMIT 01 Jan MSG New Year's Day
# Although, there will be a bank holliday on the following monday if
# new years day is on a weekend
OMIT 02 Jan [YEAR(CURRENT())] THROUGH 03 Jan [YEAR(CURRENT())] SATISFY [$Uw == 1] MSG New Year's Bank Holiday
####################
# Easter #
####################
# Easter is confusing, thankfully remind gives us a way to get it
SET easter EASTERDATE(YEAR(CURRENT()))
# Good Friday is always exactly 2 days before easter
OMIT [trigger(easter-2)] MSG Good Friday
# Easter is on easter
OMIT [trigger(easter)] MSG Easter Sunday
# Easter Monday is always 1 day after Easter
OMIT [trigger(easter+1)] MSG Easter Monday
# Mothering Sunday is always 3 weeks before easter
# It is not a bank holliday though so don't omit it
REM [trigger(easter-21)] MSG Mothering Sunday
####################
# Christmas #
####################
# Christmas is always the 25th December
REM 25 Dec SCANFROM [$U - 7] SATISFY 1
set christmas trigdate()
# Christmas eve is always the 24th December
# It is not a bank holliday though
REM [christmas - 1] MSG Christmas Eve
# if Christmas fell on a Saturday
IF wkdaynum(christmas) == 6
REM [christmas] MSG Christmas Day
REM [christmas+1] MSG Boxing Day
# The following Mon and Tues will be bank hollidays
4 years ago
OMIT [christmas+2] MSG Christmas day (substitute bank holliday)
OMIT [christmas+3] MSG Boxing Day (substitute bank holliday)
ELSE
# if it fell on a Friday
IF wkdaynum(christmas) == 5
OMIT [christmas] MSG Christmas Day
REM [christmas+1] MSG Boxing Day
4 years ago
OMIT [christmas+3] MSG Boxing Day (substitute bank holliday)
ELSE
# if it falls on a Sunday
IF wkdaynum(christmas) == 0
REM [christmas] MSG Christmas Day
OMIT [christmas+1] MSG Boxing Day
4 years ago
OMIT [christmas+2] MSG Christmas day (substitute bank holliday)
ELSE
# otherwise, observed=actual
OMIT [christmas] MSG Christmas Day
OMIT [christmas+1] MSG Boxing Day
ENDIF
ENDIF
ENDIF
# If I don't buy an advent callender, I'll be in trouble
REM 1 Dec ++7 MSG %"Advent starts %b%"%_Have you bought an advent callender%_scratchcard advent calender is on cork board
####################
# Other Events #
####################
# Valentine's day is always 14th February
REM 14 Feb ++14 MSG Valentine's Day %b
# Early May bank holliday is the first Monday in May
REM Mon 1 May SATISFY 1
OMIT [$T] MSG Early May Bank Holiday
# Spring bank holiday is the last Monday in May
# (7 days before first Monday in June)
REM Mon 1 Jun --7 SATISFY 1
OMIT [$T] MSG Spring Bank Holiday (Whitsun)
# 3rd Sunday of June
# This expression means the first Sunday after or on 15th June
REM Sun 15 Jun MSG Father's Day
# Summer bank holiday is the last Monday in May
# (7 days before first Monday in June)
REM Mon 1 Sep --7 SATISFY 1
OMIT [$T] MSG Summer Bank Holiday
# Black Friday is always the 4th Friday of November
# that is the same as saying the friday on or after the 22nd
REM Fri 22 November MSG Black Friday
####################
# Daylight Savings #
####################
# British summer time starts on the last Sunday of March
REM Sun 1 Apr --7 ++1 MSG %"Clocks Forward%" British Summer Time Starts
# British summer time ends on the last Sunday of October
REM Sun 1 Nov --7 ++1 MSG %"Clocks Backward%" British Summer Time Ends