in python/prophet/hdays.py [0:0]
def _populate(self, year):
# New Year's Day
name = "New Year's Day"
self[date(year, 1, 1)] = name
# Birthday of Prophet, Mawlid in India
# 12th day of 3rd Islamic month
name = "Birth of Prophet"
for offset in range(-1, 2, 1):
islam_year = from_gregorian(year + offset, 11, 20)[0]
y, m, d = to_gregorian(islam_year, 3, 12)
if y == year:
self[date(y, m, d)] = name
# Chinese New Year
name = "Chinese New Year"
for offset in range(-1, 2, 1):
ds = Converter.Lunar2Solar(Lunar(year + offset, 1, 1)).to_date()
if ds.year == year:
self[ds] = name
# Tamil New Year
# Note: it's not necessarily 04/14
# due to the local calendar
# other possible dates are 04/13 and 04/15
name = "Tamil New Year"
self[date(year, 4, 14)] = name
# Good Friday
name = "Good Friday"
for offset in range(-1, 2, 1):
ds = easter(year + offset) - rd(days=2)
if ds.year == year:
self[ds] = name
# Labor Day
name = "Labor Day"
self[date(year, 5, 1)] = name
# Buddha's Birthday
name = "Wesak Day"
for offset in range(-1, 2, 1):
ds = Converter.Lunar2Solar(Lunar(year + offset, 4, 15)).to_date()
if ds.year == year:
self[ds] = name
# King's birthday
# https://www.thestar.com.my/news/nation/2017/04/26/
# Before 2017: first Saturday of June
# 2017-2021: last Saturday of July
name = "King's birthday"
if year < 2017:
c = Calendar(firstweekday=MONDAY)
monthcal = c.monthdatescalendar(year, 6)
l1 = len(monthcal)
saturdays = []
for i in range(l1):
if monthcal[i][5].month == 6:
saturdays.append(monthcal[i][5])
self[saturdays[0]] = name
elif 2017 <= year <= 2021:
c = Calendar(firstweekday=MONDAY)
monthcal = c.monthdatescalendar(year, 7)
l1 = len(monthcal)
saturdays = []
for i in range(l1):
if monthcal[i][5].month == 7:
saturdays.append(monthcal[i][5])
self[saturdays[-1]] = name
# Eid al-Fitr
name = "Eid al-Fitr"
for offset in range(-1, 2, 1):
islam_year = from_gregorian(year + offset, 6, 15)[0]
y1, m1, d1 = to_gregorian(islam_year, 10, 1)
y2, m2, d2 = to_gregorian(islam_year, 10, 2)
if y1 == year:
self[date(y1, m1, d1)] = name
if y2 == year:
self[date(y2, m2, d2)] = name
# Malaysia Day
name = "Malaysia Day"
self[date(year, 9, 16)] = name
# Feast of the Sacrifice
name = "Feast of the Sacrifice"
for offset in range(-1, 2, 1):
islam_year = from_gregorian(year + offset, 8, 22)[0]
y, m, d = to_gregorian(islam_year, 12, 10)
if y == year:
self[date(y, m, d)] = name
# First Day of Muharram
name = "First Day of Muharram"
for offset in range(-1, 2, 1):
islam_year = from_gregorian(year + offset, 9, 11)[0]
y, m, d = to_gregorian(islam_year + 1, 1, 1)
if y == year:
self[date(y, m, d)] = name
# Christmas
name = "Christmas Day"
self[date(year, 12, 25)] = name