Documentation
¶
Index ¶
- Constants
- Variables
- func BOD(t time.Time) time.Time
- func CalcDayOfMonth(h *Holiday, year int, loc *time.Location) time.Time
- func CalcEasterOffset(h *Holiday, year int, loc *time.Location) time.Time
- func CalcHijriDayOfMonth(h *Holiday, year int, loc *time.Location) time.Time
- func CalcLunisolarDayOfMonth(h *Holiday, year int, loc *time.Location) time.Time
- func CalcNorthernSolstice(h *Holiday, year int, loc *time.Location) time.Time
- func CalcNorthwardEquinox(h *Holiday, year int, loc *time.Location) time.Time
- func CalcNthWeekday(h *Holiday, year int, loc *time.Location) time.Time
- func CalcSouthernSolstice(h *Holiday, year int, loc *time.Location) time.Time
- func CalcSouthwardEquinox(h *Holiday, year int, loc *time.Location) time.Time
- func EOD(t time.Time) time.Time
- func Easter(year int) (day int, month time.Month)
- func GetLeapMonth(year int) int
- func GetLunisolarMonthDays(year int, month time.Month, leapMonth bool) int
- func GetMonthDays(year int, month time.Month) int
- func GetYearDays(year int) int
- func GregorianToHijri(t time.Time) time.Time
- func GregorianToJulian(t time.Time) time.Time
- func GregorianToLunisolar(t time.Time) (time.Time, bool)
- func GtoJDN(t time.Time) int
- func HijriToGregorian(t time.Time) time.Time
- func HijriYear(gy int) int
- func HtoJDN(t time.Time) int
- func IsJulianLeapYear(year int) bool
- func IsLeapYear(year int) bool
- func IsWeekend(t time.Time) bool
- func JDNtoG(jd int, loc ...*time.Location) time.Time
- func JDNtoH(jd int, loc ...*time.Location) time.Time
- func JDNtoJ(jd int, loc ...*time.Location) time.Time
- func JtoJDN(t time.Time) int
- func JulianToGegorian(t time.Time) time.Time
- func LunisolarToGregorian(t time.Time, leap bool) time.Time
- func NthWeekday(year int, month time.Month, weekday time.Weekday, n int, loc *time.Location) time.Time
- func YearInRange(year int, yearRange []int) bool
- func YearRange(start, end int) []int
- type Calendar
- func BVMF(years ...int) *Calendar
- func GetCalendar(name string, years ...int) *Calendar
- func NewCalendar(name string, loc *time.Location, years ...int) *Calendar
- func XAMS(years ...int) *Calendar
- func XASX(years ...int) *Calendar
- func XBKK(years ...int) *Calendar
- func XBOM(years ...int) *Calendar
- func XBRU(years ...int) *Calendar
- func XCBF(years ...int) *Calendar
- func XCBO(years ...int) *Calendar
- func XETR(years ...int) *Calendar
- func XFRA(years ...int) *Calendar
- func XHKG(years ...int) *Calendar
- func XJPX(years ...int) *Calendar
- func XKRX(years ...int) *Calendar
- func XLIS(years ...int) *Calendar
- func XLON(years ...int) *Calendar
- func XMAD(years ...int) *Calendar
- func XMEX(years ...int) *Calendar
- func XMIL(years ...int) *Calendar
- func XNAS(years ...int) *Calendar
- func XNYS(years ...int) *Calendar
- func XPAR(years ...int) *Calendar
- func XSES(years ...int) *Calendar
- func XSHE(years ...int) *Calendar
- func XSHG(years ...int) *Calendar
- func XSWX(years ...int) *Calendar
- func XTSE(years ...int) *Calendar
- func (c *Calendar) AddEarlyClosingDays(h ...*Holiday)
- func (c *Calendar) AddHolidays(h ...*Holiday)
- func (c *Calendar) HasHoliday(h *Holiday) bool
- func (c *Calendar) IsBusinessDay(t time.Time) bool
- func (c *Calendar) IsEarlyClose(t time.Time) bool
- func (c *Calendar) IsHoliday(t time.Time) bool
- func (c *Calendar) IsOpen(t time.Time) bool
- func (c *Calendar) NextBusinessDay(t time.Time) time.Time
- func (c *Calendar) NextClose(t time.Time) time.Time
- func (c *Calendar) NextHoliday(t time.Time) (time.Time, *Holiday)
- func (c *Calendar) Session() *Session
- func (c *Calendar) SetSession(s *Session)
- func (c *Calendar) SetYears(start, end int)
- func (c *Calendar) String() string
- func (c *Calendar) Years() (start, end int)
- type Holiday
- func (h *Holiday) AddOffset(o int) *Holiday
- func (h *Holiday) Calc(year int, loc *time.Location) time.Time
- func (h Holiday) Copy(name ...string) *Holiday
- func (h *Holiday) SetAfterYear(year int) *Holiday
- func (h *Holiday) SetBeforeYear(year int) *Holiday
- func (h *Holiday) SetObservance(o observance) *Holiday
- func (h *Holiday) SetOffset(o int) *Holiday
- func (h *Holiday) SetOnYear(year int) *Holiday
- type Session
Constants ¶
const ( AlMuharram = time.Month(1) Safar = time.Month(2) RabiAlAwwal = time.Month(3) RabiAlAkhir = time.Month(4) JumadaAlUla = time.Month(5) JumadaAlThaniyah = time.Month(6) Rajab = time.Month(7) ShaBan = time.Month(8) Ramadan = time.Month(9) Shawwal = time.Month(10) DhuAlQaDah = time.Month(11) DhuAlHijjah = time.Month(12) )
Hijri Calendar months
const YearsAhead = 5
const YearsPast = 5
Variables ¶
var (
Mexico, _ = time.LoadLocation("America/Mexico_City")
Chicago, _ = time.LoadLocation("America/Chicago")
Toronto, _ = time.LoadLocation("America/Toronto")
NewYork, _ = time.LoadLocation("America/New_York")
SaoPaulo, _ = time.LoadLocation("America/Sao_Paulo")
London, _ = time.LoadLocation("Europe/London")
Lisbon, _ = time.LoadLocation("Europe/Lisbon")
Madrid, _ = time.LoadLocation("Europe/Madrid")
Amsterdam, _ = time.LoadLocation("Europe/Amsterdam")
Brussels, _ = time.LoadLocation("Europe/Brussels")
Paris, _ = time.LoadLocation("Europe/Paris")
Zurich, _ = time.LoadLocation("Europe/Zurich")
Milan, _ = time.LoadLocation("Europe/Rome")
Franckfurt, _ = time.LoadLocation("Europe/Berlin")
Moscow, _ = time.LoadLocation("Europe/Moscow")
Johannesburg, _ = time.LoadLocation("Africa/Johannesburg")
Dubai, _ = time.LoadLocation("Asia/Dubai")
Mumbai, _ = time.LoadLocation("Asia/Kolkata")
Singapore, _ = time.LoadLocation("Asia/Singapore")
Bangkok, _ = time.LoadLocation("Asia/Bangkok")
HongKong, _ = time.LoadLocation("Asia/Hong_Kong")
Shenzhen, _ = time.LoadLocation("Asia/Hong_Kong")
Shanghai, _ = time.LoadLocation("Asia/Shanghai")
Seoul, _ = time.LoadLocation("Asia/Seoul")
Tokyo, _ = time.LoadLocation("Asia/Tokyo")
Sydney, _ = time.LoadLocation("Australia/Sydney")
)
Predefined time locations for various cities.
var ( // New Year's day on 1-Jan NewYear = &Holiday{ Name: "New Year's Day", Month: time.January, Day: 1, calc: CalcDayOfMonth, } // Epiphany on 6-Jan Epiphany = &Holiday{ Name: "Epiphany", Month: time.January, Day: 6, calc: CalcDayOfMonth, } // Lunar New Year's Eve LunarNewYearEve = &Holiday{ Name: "Lunar New Year's Eve", Month: time.January, Day: 1, Offset: -1, calc: CalcLunisolarDayOfMonth, } // Lunar New Year's day LunarNewYear = &Holiday{ Name: "Lunar New Year's Day", Month: time.January, Day: 1, calc: CalcLunisolarDayOfMonth, } // Carnival, Mardi Gras or Fat Tuesday - 47 days before Easter Carnival = &Holiday{ Name: "Carnival", Offset: -47, calc: CalcEasterOffset, } // Maundy Thursday - three days before Easter MaundyThursday = &Holiday{ Name: "Maundy Thursday", Offset: -3, calc: CalcEasterOffset, } // Good Friday - two days before Easter GoodFriday = &Holiday{ Name: "Good Friday", Offset: -2, calc: CalcEasterOffset, } // Northward Equinox - March Equinox - ~20-Mar NorthwardEquinox = &Holiday{ Name: "Northward Equinox", calc: CalcNorthwardEquinox, } // Easter Monday - the day after Easter EasterMonday = &Holiday{ Name: "Easter Monday", Offset: 1, calc: CalcEasterOffset, } // Eid al-Fitr - 1st day of Shawwal (10th month) EidAlFitr = &Holiday{ Name: "Eid al-Fitr", Month: Shawwal, Day: 1, calc: CalcHijriDayOfMonth, } // Eid al-Adha - 1st day of Dhu al-Hijjah (10th month) EidAlAdha = &Holiday{ Name: "Eid al-Adha", Month: DhuAlHijjah, Day: 10, calc: CalcHijriDayOfMonth, } // WorkersDay is the International Workers' Day on 1-May WorkersDay = &Holiday{ Name: "International Workers' Day", Month: time.May, Day: 1, calc: CalcDayOfMonth, } // Buddha's Birthday - 8th day of the 4th lunar month BuddhasBirthday = &Holiday{ Name: "Buddha's Birthday", Month: time.Month(4), Day: 8, calc: CalcLunisolarDayOfMonth, } // Vesak Day - 15th day of the fourth lunar month VesakDay = &Holiday{ Name: "Vesak Day", Month: time.Month(4), Day: 15, calc: CalcLunisolarDayOfMonth, } // Deepavali or Diwali, victory of light - the last day of the lunar month Asvina Deepavali = &Holiday{ Name: "Deepavali", Month: time.Month(9), Day: -1, calc: CalcLunisolarDayOfMonth, } // Ascension Day on the 39th day after Easter AscensionDay = &Holiday{ Name: "Ascension Day", Offset: 39, calc: CalcEasterOffset, } // Pentecost Monday (or Whit Monday) on the day after Pentecost (50 days after Easter) PentecostMonday = &Holiday{ Name: "Pentecost Monday", Offset: 50, calc: CalcEasterOffset, } // Corpus Christi 60 days after Easter CorpusChristi = &Holiday{ Name: "Corpus Christi", Offset: 60, calc: CalcEasterOffset, } // Northern Solstice - June Solstice - ~20-Jun NorthernSolstice = &Holiday{ Name: "Northern Solstice", calc: CalcNorthernSolstice, } // Assumption of Mary on 15-Aug AssumptionOfMary = &Holiday{ Name: "Assumption of Mary", Month: time.August, Day: 15, calc: CalcDayOfMonth, } // Souththward Equinox - September Equinox - ~20-Sep SouthwardEquinox = &Holiday{ Name: "Souththward Equinox", calc: CalcSouthwardEquinox, } // Double Ninth (Chung Yeung) Festival- 9th day of the 9th lunar month DoubleNinthFestival = &Holiday{ Name: "Double Ninth (Chung Yeung) Festival", Month: time.Month(9), Day: 9, calc: CalcLunisolarDayOfMonth, } // Reformation Day - 31-Oct-2017 ReformationDay = &Holiday{ Name: "Reformation Day", Month: time.October, Day: 31, calc: CalcDayOfMonth, } // All Saints' Day on 1-Nov AllSaintsDay = &Holiday{ Name: "All Saints' Day", Month: time.November, Day: 1, calc: CalcDayOfMonth, } // Armistice Day on 11-Nov ArmisticeDay = &Holiday{ Name: "Armistice Day", Month: time.November, Day: 11, calc: CalcDayOfMonth, } // Immaculate Conception on 8-Dec ImmaculateConception = &Holiday{ Name: "Immaculate Conception", Month: time.December, Day: 8, calc: CalcDayOfMonth, } // Southern Solstice - December Solstice - ~20-Dec SouthernSolstice = &Holiday{ Name: "Southern Solstice", calc: CalcSouthernSolstice, } // Christmas Eve on 24-Dec ChristmasEve = &Holiday{ Name: "Christmas Eve", Month: time.December, Day: 24, calc: CalcDayOfMonth, } // Christmas Day on 25-Dec ChristmasDay = &Holiday{ Name: "Christmas Day", Month: time.December, Day: 25, calc: CalcDayOfMonth, } // BoxingDay is the day after Christmas (Boxing Day / St. Stephen's Day) on 26-Dec BoxingDay = &Holiday{ Name: "Boxing Day", Month: time.December, Day: 26, calc: CalcDayOfMonth, } // New Year's Eve on 31-Dec NewYearsEve = &Holiday{ Name: "New Year's Eve", Month: time.December, Day: 31, calc: CalcDayOfMonth, } )
var ( // Martin Luther King Jr. Day on the 3rd Monday in January MLKDay = &Holiday{ Name: "Martin Luther King Jr. Day", Month: time.January, Weekday: time.Monday, NthWeekday: 3, calc: CalcNthWeekday, } // Presidents' Day or Washington's Birthday on the 3rd Monday in February PresidentsDay = &Holiday{ Name: "Presidents' Day", Month: time.February, Weekday: time.Monday, NthWeekday: 3, calc: CalcNthWeekday, } // Memorial Day on the last Monday in May MemorialDay = &Holiday{ Name: "Memorial Day", Month: time.May, Weekday: time.Monday, NthWeekday: -1, calc: CalcNthWeekday, } // Juneteenth National Independence Day on 19-Jun JuneteenthDay = &Holiday{ Name: "Juneteenth National Independence Day", Month: time.June, Day: 19, AfterYear: 2022, Observance: nearestWorkday, calc: CalcDayOfMonth, } // Independence Day on 4-Jul IndependenceDay = &Holiday{ Name: "Independence Day", Month: time.July, Day: 4, Observance: nearestWorkday, calc: CalcDayOfMonth, } // Day Before Independence Day BeforeIndependenceDay = &Holiday{ Name: "Day before Independence Day", Month: time.July, Day: 3, calc: CalcDayOfMonth, } // Day Before Independence Day AfterIndependenceDay = &Holiday{ Name: "Day after Independence Day", Month: time.July, Day: 5, calc: CalcDayOfMonth, } // Labor Day on the first Monday in September LaborDay = &Holiday{ Name: "Labor Day", Month: time.September, Weekday: time.Monday, NthWeekday: 1, calc: CalcNthWeekday, } // Columbus Day on the second Monday in October ColumbusDay = &Holiday{ Name: "Columbus Day", Month: time.October, Weekday: time.Monday, NthWeekday: 2, calc: CalcNthWeekday, } // Veterans Day on 11-Nov VeteransDay = &Holiday{ Name: "Veterans Day", Month: time.November, Day: 11, calc: CalcDayOfMonth, } // Thanksgiving Day on the fourth Thursday in November ThanksgivingDay = &Holiday{ Name: "Thanksgiving Day", Month: time.November, Weekday: time.Thursday, NthWeekday: 4, calc: CalcNthWeekday, } // Black Friday is the day following Thanksgiving BlackFriday = &Holiday{ Name: "Black Friday", Month: time.November, Weekday: time.Thursday, NthWeekday: 4, Offset: 1, calc: CalcNthWeekday, } // President Richard Nixon - April 27, 1994 NixonMourningDay = &Holiday{ Name: "President Richard Nixon Mourning Day", Month: time.April, Day: 27, OnYear: 1994, calc: CalcDayOfMonth, } // President Ronald W. Reagan - June 11, 2004 ReaganMourningDay = &Holiday{ Name: "President Ronald W. Reagan Mourning Day", Month: time.June, Day: 11, OnYear: 2004, calc: CalcDayOfMonth, } // President Gerald R. Ford - Jan 2, 2007 FordMourningDay = &Holiday{ Name: "President Gerald R. Ford Mourning Day", Month: time.January, Day: 2, OnYear: 2007, calc: CalcDayOfMonth, } // President George Bush Senior - Nov 30, 2018 BushSeniorMourningDay = &Holiday{ Name: "President George Bush Senior Mourning Day", Month: time.November, Day: 30, OnYear: 2018, calc: CalcDayOfMonth, } // National days of Mourning for the United States of America USNationalDaysOfMourning = []*Holiday{ NixonMourningDay, ReaganMourningDay, FordMourningDay, BushSeniorMourningDay, } // September 11 - september 11, 2001 SeptemberEleven = &Holiday{ Name: "Sepember 11", Month: time.September, Day: 11, OnYear: 2001, calc: CalcDayOfMonth, } // September 11 -14 range SeptemberElevenDays = []*Holiday{ SeptemberEleven, SeptemberEleven.Copy("Sepember 11 day 2").SetOffset(1), SeptemberEleven.Copy("Sepember 11 day 3").SetOffset(2), SeptemberEleven.Copy("Sepember 11 day 4").SetOffset(3), } // Hurricane Sandy - october 29, 2012 HurricaneSandy = &Holiday{ Name: "Hurricane Sandy", Month: time.October, Day: 29, OnYear: 2012, calc: CalcDayOfMonth, } HurricaneSandyDays = []*Holiday{ HurricaneSandy, HurricaneSandy.Copy("Hurricane Sandy day 2").SetOffset(1), } )
var ( // Early May or May Day on the first monday of May EarlyMay = &Holiday{ Name: "Early May Bank Holiday", Month: time.May, Weekday: time.Monday, NthWeekday: 1, calc: CalcNthWeekday, } // Spring Bank Holiday or Late May on the last monday of May SpringHoliday = &Holiday{ Name: "Spring Bank Holiday", Month: time.May, Weekday: time.Monday, NthWeekday: -1, calc: CalcNthWeekday, } // Summer Bank Holiday on the last monday of August SummerHoliday = &Holiday{ Name: "Summer Bank Holiday", Month: time.August, Weekday: time.Monday, NthWeekday: -1, calc: CalcNthWeekday, } // Queen Elizabeth II Golden Jubilee - 3,4 Jun 2002 GoldenJubilee = &Holiday{ Name: "Golden Jubilee", Month: time.June, Day: 3, OnYear: 2002, calc: CalcDayOfMonth, } GoldenJubileeDays = []*Holiday{ GoldenJubilee, GoldenJubilee.Copy("Golden Jubilee day 2").SetOffset(1), } // Wedding Day of Prince William and Catherine Middleton WilliamWedding = &Holiday{ Name: "Wedding Day of Prince William and Catherine Middleton", Month: time.April, Day: 29, OnYear: 2011, calc: CalcDayOfMonth, } // Queen Elizabeth II Diamond Jubilee - 4,5 Jun 2012 DiamondJubilee = &Holiday{ Name: "Diamond Jubilee", Month: time.June, Day: 4, OnYear: 2012, calc: CalcDayOfMonth, } DiamondJubileeDays = []*Holiday{ DiamondJubilee, DiamondJubilee.Copy("Diamond Jubilee day 2").SetOffset(1), } // VE-Day 75th Anniversary VEAnniversary = &Holiday{ Name: "VE-Day 75th Anniversary", Month: time.May, Day: 8, OnYear: 2020, calc: CalcDayOfMonth, } // Queen Elizabeth II Platinum Jubilee - 2,3 Jun 2022 // The late May bank holiday will be moved to Thursday 2nd June 2022 and the new, additional bank holiday will be on Friday 3rd June PlatinumJubilee = &Holiday{ Name: "Platinum Jubilee", Month: time.June, Day: 2, OnYear: 2022, calc: CalcDayOfMonth, } PlatinumJubileeDays = []*Holiday{ PlatinumJubilee, PlatinumJubilee.Copy("Platinum Jubilee day 2").SetOffset(1), } // State Funeral of Queen Elizabeth II - 19 Sep 2022 QueenElizabethFuneral = &Holiday{ Name: "State Funeral of Queen Elizabeth II", Month: time.September, Day: 19, OnYear: 2022, calc: CalcDayOfMonth, } // King Charles III Coronation Bank Holiday - 8 May 2023 KingCharlesCoronation = &Holiday{ Name: "King Charles III Coronation Bank Holiday", Month: time.May, Day: 8, OnYear: 2023, calc: CalcDayOfMonth, } )
var ( // Liberty Day - 25-Apr LibertyDay = &Holiday{ Name: "Liberty Day", Month: time.April, Day: 25, calc: CalcDayOfMonth, } // Portugal Day - 10-Jun PortugalDay = &Holiday{ Name: "Portugal Republic Day", Month: time.October, Day: 5, calc: CalcDayOfMonth, } // Portugal Independence Day - 13-Jun SaintAnthonysDay = &Holiday{ Name: "Saint Anthony's Day", Month: time.December, Day: 1, calc: CalcDayOfMonth, } // Portugal Republic Day - 5-Oct PortugalRepublicDay = &Holiday{ Name: "Portugal REpublic Day", Month: time.October, Day: 5, calc: CalcDayOfMonth, } // Portugal Independence Day - 1-Dec PortugalIndependenceDay = &Holiday{ Name: "Portugal Independence Day", Month: time.December, Day: 1, calc: CalcDayOfMonth, } )
var ( // National Day of Spain - 5-Oct SpainNationalDay = &Holiday{ Name: "National Day of Spain", Month: time.October, Day: 12, calc: CalcDayOfMonth, } // Constitution Day - 6-Dec SpainConstitutionDay = &Holiday{ Name: "Constitution Day", Month: time.December, Day: 6, calc: CalcDayOfMonth, } )
var ( // Berchtold's Day BerchtoldsDay = &Holiday{ Name: "Berchtold's Day", Month: time.January, Day: 2, calc: CalcDayOfMonth, } // Swiss National Day SwissNationalDay = &Holiday{ Name: "Swiss National Day", Month: time.August, Day: 1, calc: CalcDayOfMonth, } )
var ( // Quingming Festival (Tomb Sweeping Day) - 104 days after start of winter usually April 4 or 5 QingmingJie = &Holiday{ Name: "Quingming Festival", OnYear: -1, Offset: 104, calc: CalcSouthernSolstice, } // Dragon Boat Festival day - 5th day of 5th lunar month DragonBoatFestival = &Holiday{ Name: "Dragon Boat Festival", Month: time.Month(5), Day: 5, calc: CalcLunisolarDayOfMonth, } // People's Republic of China National day - 1-Oct ChinaNationalDay = &Holiday{ Name: "China National Day", Month: time.October, Day: 1, calc: CalcDayOfMonth, } // Mid-Autumn Festival 中秋節 - 15yh day of the 8th lunar month MidAutumnFestival = &Holiday{ Name: "Mid-Autumn Festival", Month: time.Month(8), Day: 15, calc: CalcLunisolarDayOfMonth, } )
China Holidays
var ( // Coming of Age Day - Seijin no hi - 成人の日 - 2nd monday of January ComingOfAgeDay = &Holiday{ Name: "Coming of Age Day", Month: time.January, Weekday: time.Monday, NthWeekday: 2, calc: CalcNthWeekday, } // National Foundation Day - Kenkoku kinen no hi - 建国記念の日 - 11-Feb NationalFoundationDay = &Holiday{ Name: "National Foundation Day", Month: time.February, Day: 11, calc: CalcDayOfMonth, } // Greenery Day Before 2007 - Midori no hi - みどりの日 - 29-Apr before 2007 GreeneryDayBefore2007 = &Holiday{ Name: "Greenery Day", Month: time.April, Day: 29, BeforeYear: 2007, calc: CalcDayOfMonth, } // Showa Day - Shōwa no hi - 昭和の日 - 29-Apr after 2007 ShowaDay = &Holiday{ Name: "Showa Day", Month: time.April, Day: 29, AfterYear: 2007, calc: CalcDayOfMonth, } // Constitution Memorial Day - Kenpō kinen bi - 憲法記念日 - 3-May ConstitutionMemorialDay = &Holiday{ Name: "Constitution Memorial Day", Month: time.May, Day: 3, calc: CalcDayOfMonth, } // Citizen's Holiday ot the Golden Week before 2007 - Kokumin no kyūjitsu - 国民の休日 - 4-May before 2007 CitizensHolidayGoldenWeek = &Holiday{ Name: "Citizen's Holiday of the Golden Week", Month: time.May, Day: 4, BeforeYear: 2007, calc: CalcDayOfMonth, } // Greenery Day After 2007 - Midori no hi - みどりの日 - 4-May after 2007 GreeneryDayAfter2007 = &Holiday{ Name: "Greenery Day", Month: time.May, Day: 4, AfterYear: 2007, calc: CalcDayOfMonth, } // Children's Day - Kodomo no hi - こどもの日 - 5-May ChildrensDay = &Holiday{ Name: "Children's Day", Month: time.May, Day: 5, calc: CalcDayOfMonth, } // Marine Day - Umi no hi - 海の日 - 3rd monday of July MarineDay = &Holiday{ Name: "Marine Day", Month: time.July, Weekday: time.Monday, NthWeekday: 3, AfterYear: 2003, calc: CalcNthWeekday, } // Marine Day before 2003 - Umi no hi - 海の日 - 20-July MarineDayBefore2003 = &Holiday{ Name: "Marine Day before 2003", Month: time.July, Day: 23, BeforeYear: 2003, calc: CalcDayOfMonth, } // Marine Day 2020- Umi no hi - 海の日 - Changed for Tokyo Olympics - 23-Jul-2020 MarineDay2020 = &Holiday{ Name: "Marine Day 2020", Month: time.July, Day: 23, OnYear: 2020, calc: CalcDayOfMonth, } // Marine Day 2021- Umi no hi - 海の日 - Changed for Tokyo Olympics (2020 postponed) - 22-Jul-2021 MarineDay2021 = &Holiday{ Name: "Marine Day 2021", Month: time.July, Day: 22, OnYear: 2021, calc: CalcDayOfMonth, } // Mountain Day - Yama no hi - 山の日 - 3rd monday of July MountainDay = &Holiday{ Name: "Mountain Day", Month: time.August, Day: 11, AfterYear: 2016, calc: CalcDayOfMonth, } // Mountain Day 2020 - Yama no hi - 山の日 - Changed for Tokyo Olympics - 10-Aug-2020 MountainDay2020 = &Holiday{ Name: "Mountain Day 2020", Month: time.August, Day: 10, OnYear: 2020, calc: CalcDayOfMonth, } // Mountain Day 2021 - Yama no hi - 山の日 - Changed for Tokyo Olympics (2020 postponed) - 9-Aug-2021 MountainDay2021 = &Holiday{ Name: "Mountain Day 2021", Month: time.August, Day: 9, OnYear: 2021, calc: CalcDayOfMonth, } // Respect for the Aged Day - Keirō no hi - 敬老の日 - 3rd monday of September after 2003 RespectForTheAgedDay = &Holiday{ Name: "Respect for the Aged Day", Month: time.September, Weekday: time.Monday, NthWeekday: 3, AfterYear: 2003, calc: CalcNthWeekday, } // Respect for the Aged Day before 2003 - Keirō no hi - 敬老の日 - 15-Sep before 2003 RespectForTheAgedDayBefore2003 = &Holiday{ Name: "Respect for the Aged Day before 2003", Month: time.September, Day: 15, NthWeekday: 3, BeforeYear: 2003, calc: CalcDayOfMonth, } // Health and Sports Day - Supōtsu no hi - スポーツの日 - 2nd monday of October HealthAndSportsDay = &Holiday{ Name: "Health and Sports Day", Month: time.October, Weekday: time.Monday, NthWeekday: 2, calc: CalcNthWeekday, } // Health and Sports Day 2020 - Changed for Tokyo Olympics - 24-Jul-2020 HealthAndSportsDay2020 = &Holiday{ Name: "Health and Sports Day", Month: time.July, Day: 24, OnYear: 2020, calc: CalcDayOfMonth, } // Health and Sports Day 2021 - Changed for Tokyo Olympics (2020 postponed) - 23-Jul-2021 HealthAndSportsDay2021 = &Holiday{ Name: "Health and Sports Day", Month: time.July, Day: 23, OnYear: 2021, calc: CalcDayOfMonth, } // Culture Day - Bunka no hi - 文化の日 - 3-Nov CultureDay = &Holiday{ Name: "Culture Day", Month: time.November, Day: 3, calc: CalcDayOfMonth, } // Labor Thanksgiving Day - Kinrō Kansha no hi - 勤労感謝の日 - 23-Nov LaborThanksgivingDay = &Holiday{ Name: "Labor Thanksgiving Day", Month: time.November, Day: 23, calc: CalcDayOfMonth, } // Emperor Akihito's Birthday - Tennō tanjōbi - 天皇誕生日 - 23-Dec before 30-Apr-2019 EmperorAkihitoBirthday = &Holiday{ Name: "Emperor Akihito's Birthday", Month: time.December, Day: 23, BeforeYear: 2019, calc: CalcDayOfMonth, } // Emperor Naruhito's Birthday - Tennō tanjōbi - 天皇誕生日 - 23-Feb before 30-Apr-2019 EmperorNaruhitoBirthday = &Holiday{ Name: "Emperor Naruhito's Birthday", Month: time.February, Day: 23, AfterYear: 2020, calc: CalcDayOfMonth, } // Emperor Akihito's Abdication Day - Taiirei-Seiden-no-gi - 退位礼正殿の儀 - 30-Apr-2019 AbdicationDay = &Holiday{ Name: "Emperor Akihito's Abdication Day", Month: time.April, Day: 30, OnYear: 2019, calc: CalcDayOfMonth, } // Beginning of the Reiwa era and accession date of Emperor Naruhito - 1-May-2019 AccessionDay = &Holiday{ Name: "Naruhito's Accession Day", Month: time.May, Day: 1, OnYear: 2019, calc: CalcDayOfMonth, } // Accession Citizen's Holiday - 2-May-2019 AccessionCitizensHoliday = &Holiday{ Name: "Accession Citizen's Holiday", Month: time.May, Day: 2, OnYear: 2019, calc: CalcDayOfMonth, } // Enthronement Ceremony - Sokuirei-Seiden-no-gi - 即位礼正殿の儀 - 22-Oct-2019 EnthronementCeremony = &Holiday{ Name: "Enthronement Ceremony", Month: time.October, Day: 22, OnYear: 2019, calc: CalcDayOfMonth, } // Silver Week Citizen's Holidays on 22nd of September SilverWeekCitizensHoliday = &Holiday{ Name: "Silver Week Citizen's Holidays", Month: time.September, Day: 22, OnYear: 2009, calc: CalcDayOfMonth, } // Silver Week Citizen's Holidays on 21st of September SilverWeekCitizensHoliday21 = &Holiday{ Name: "Silver Week Citizen's Holidays on the 21st", Month: time.September, Day: 21, OnYear: 2032, calc: CalcDayOfMonth, } SilverWeekCitizensHolidays = []*Holiday{ SilverWeekCitizensHoliday, SilverWeekCitizensHoliday.Copy().SetOnYear(2015), SilverWeekCitizensHoliday.Copy().SetOnYear(2020), SilverWeekCitizensHoliday.Copy().SetOnYear(2026), SilverWeekCitizensHoliday21, SilverWeekCitizensHoliday.Copy().SetOnYear(2037), SilverWeekCitizensHoliday.Copy().SetOnYear(2043), SilverWeekCitizensHoliday21.Copy().SetOnYear(2049), SilverWeekCitizensHoliday.Copy().SetOnYear(2054), SilverWeekCitizensHoliday21.Copy().SetOnYear(2060), SilverWeekCitizensHoliday.Copy().SetOnYear(2071), SilverWeekCitizensHoliday21.Copy().SetOnYear(2077), SilverWeekCitizensHoliday21.Copy().SetOnYear(2088), SilverWeekCitizensHoliday21.Copy().SetOnYear(2094), SilverWeekCitizensHoliday.Copy().SetOnYear(2099), } )
var ( // Bastille Day - 14-Jul BastilleDay = &Holiday{ Name: "Bastille Day", Month: time.July, Day: 14, calc: CalcDayOfMonth, } )
var ( // Belgium Independence Day - 21-Jul BelgiumIndependenceDay = &Holiday{ Name: "Belgium Independence Day", Month: time.July, Day: 21, calc: CalcDayOfMonth, } )
var ( // Hong Kong Special Administrative Region Establishment Day - 香港特別行政區成立紀念日 - 1st of Jul EstablishmentDay = &Holiday{ Name: "Hong kong Establishment Day", Month: time.July, Day: 1, calc: CalcDayOfMonth, } )
Hong kong Holidays * https://www.hkex.com.hk/News/HKEX-Calendar?sc_lang=en
var ( // German Unity Day - 3-Oct GermanUnityDay = &Holiday{ Name: "German Unity Day", Month: time.October, Day: 3, calc: CalcDayOfMonth, } )
var LilianDate = time.Date(1582, 10, 15, 0, 0, 0, 0, time.UTC)
Gregorian calendar start date
var ( // Koninginnedag (Koningsdag King's day since 2013) - 30-Apr QueensDay = &Holiday{ Name: "Queen's Day", Month: time.April, Day: 30, calc: CalcDayOfMonth, } )
var ( // Singapore National Day - 9th of Aug SingaporeNationalDay = &Holiday{ Name: "Singapore National Day ", Month: time.August, Day: 9, calc: CalcDayOfMonth, } )
Singapore Holidays
Functions ¶
func CalcDayOfMonth ¶
Day of month in Gregorian Calendar, -1 means last day of the month.
func CalcEasterOffset ¶
Easter sunday.
func CalcHijriDayOfMonth ¶
Day of month in Hijri Calendar, -1 means last day of the month.
func CalcLunisolarDayOfMonth ¶
Day of month in Lunisolar Calendar, -1 means last day of the month.
func CalcNorthernSolstice ¶
June Solstice.
func CalcNorthwardEquinox ¶
March Equinox.
func CalcNthWeekday ¶
Nth occurrence of a weekday like 3rd monday, -1 means last monday of the month.
func CalcSouthernSolstice ¶
December Solstice.
func CalcSouthwardEquinox ¶
September Equinox.
func GetLeapMonth ¶
GetLeapMonth returns the leap month of a year (0 if none).
func GetLunisolarMonthDays ¶
GetLunisolarMonthDays gets the number of days in a lunar month.
func GetMonthDays ¶
Year, Month -> number of days in the month
func GetYearDays ¶
Get the number of days in the Gregorian calendar year
func GregorianToHijri ¶
Gregorian calendar Time -> Hijri calendar Time
func GregorianToJulian ¶
Gregorian calendar Time -> Julian calendar Time
func GregorianToLunisolar ¶
GregorianToLunisolar returns a Lunisolar calendar time from a Gregorian calendar time.
func HijriToGregorian ¶
Hijri calendar Time -> Gregorian calendar Time
func JulianToGegorian ¶
Julian calendar Time -> Gregorian calendar Time
func LunisolarToGregorian ¶
LunisolarToGregorian returns a Gregorian calendar time from a Lunisolar calendar time.
func NthWeekday ¶
func NthWeekday(year int, month time.Month, weekday time.Weekday, n int, loc *time.Location) time.Time
Nth occurrence of a weekday like 3rd monday
func YearInRange ¶
Types ¶
type Calendar ¶
type Calendar struct { Name string Loc *time.Location // NewYork or time.LoadLocation("America/New_York") // contains filtered or unexported fields }
Calendar represents a calendar with holidays and sessions.
func GetCalendar ¶
func NewCalendar ¶
NewCalendar creates a new Calendar instance based on the provided parameters. It accepts a name for the calendar, a location, and an optional list of years. If no years are specified, it defaults to a range of 5 years before and after the current year. If one year is provided, it sets that year as the start and calculates the end as 10 years later. If two years are provided, it calculates the end year based on the first year and checks if the second is less than 100.
func (*Calendar) AddEarlyClosingDays ¶
AddEarlyClosingDays appends early closing holidays to the calendar.
func (*Calendar) AddHolidays ¶
AddHolidays appends holidays to the calendar and adds them to the holiday list.
func (*Calendar) HasHoliday ¶
HasHoliday checks if a specific holiday is present in the calendar.
func (*Calendar) IsBusinessDay ¶
IsBusinessDay checks if a specific Tims is a business day for this calendar.
func (*Calendar) IsEarlyClose ¶
IsHoliday checks if a specific Tims is a early close for this calendar.
func (*Calendar) IsHoliday ¶
IsHoliday checks if a specific Tims is a holiday day for this calendar.
func (*Calendar) IsOpen ¶
IsOpen checks if a specific Tims is in a business session for this calendar.
func (*Calendar) NextBusinessDay ¶
NextBusinessDay returns the business day following the provided Time.
func (*Calendar) NextHoliday ¶
NextHoliday returns the following holiday time and Holiday for the provided Time.
func (*Calendar) SetSession ¶
SetSession updates the session details for the calendar.
type Holiday ¶
type Holiday struct { Name string OnYear int // Used if holiday occures only on specific year BeforeYear int // Used if holiday occures before a specific year AfterYear int // Used if holiday occures after or on a specific year Month time.Month // Gregorian month also used for lunar month Day int Weekday time.Weekday NthWeekday int Offset int Observance observance // contains filtered or unexported fields }
func (*Holiday) SetAfterYear ¶
func (*Holiday) SetBeforeYear ¶
func (*Holiday) SetObservance ¶
type Session ¶
type Session struct { EarlyOpen time.Duration Open time.Duration BreakStart time.Duration BreakStop time.Duration Close time.Duration EarlyClose time.Duration LateClose time.Duration }
Session defines the operating hours and breaks for the calendar.