Esempio n. 1
0
    def _populate(self, year):
        # New Year's Day
        name = "New Year's Day"
        self[date(year, 1, 1)] = name

        # Chinese New Year/ Spring Festival
        name = "Chinese New Year"
        self[LunarDate(year, 1, 1).toSolarDate()] = name

        # Tomb-Sweeping Day
        name = "Tomb-Sweeping Day"
        self[date(year, 4, 4)] = name
        self[date(year, 4, 5)] = name

        # Labor Day
        name = "Labor Day"
        self[date(year, 5, 1)] = name

        # Dragon Boat Festival
        name = "Dragon Boat Festival"
        self[LunarDate(year, 5, 5).toSolarDate()] = name

        # Mid-Autumn Festival
        name = "Mid-Autumn Festival"
        self[LunarDate(year, 8, 15).toSolarDate()] = name

        # National Day
        name = "National Day"
        self[date(year, 10, 1)] = name
Esempio n. 2
0
 def test_lunar_holiday_in_current_year(self):
     self.assertEqual(gong.lunarnewyearsday(),
                      LunarDate(current_year, 1, 1).toSolarDate())
     self.assertEqual(gong.buddhasbirthday(),
                      LunarDate(current_year, 4, 8).toSolarDate())
     self.assertEqual(gong.koreanthanksgiving(),
                      LunarDate(current_year, 8, 15).toSolarDate())
Esempio n. 3
0
    def _populate(self, year):
        # New Year's Day
        name = "New Year's Day"
        self[date(year, 1, 1)] = name

        # New Year's Day by the Lunar
        name = "New Year's Day by the Lunar"
        for offset in range(-1, 2, 1):
            ds = LunarDate(year + offset, 1, 1).toSolarDate()
            if ds.year == year:
                self[ds] = name

        # Independence Movement Day
        name = "Independence Movement Day"
        self[date(year, 3, 1)] = name

        # Buddha's Birthday
        name = "Buddha's Birthday"
        for offset in range(-1, 2, 1):
            ds = LunarDate(year + offset, 4, 8).toSolarDate()
            if ds.year == year:
                self[ds] = name

        # Children's Day
        name = "Children's Day"
        self[date(year, 5, 5)] = name

        # Memorial Day
        name = "Memorial Day"
        self[date(year, 6, 6)] = name

        # Liberation Day
        name = "Liberation Day"
        self[date(year, 8, 15)] = name

        # Chuseok
        name = "Chuseok"
        for offset in range(-1, 2, 1):
            ds = LunarDate(year + offset, 8, 15).toSolarDate()
            if ds.year == year:
                self[ds] = name

        # National Foundation Day
        name = "National Foundation Day"
        self[date(year, 10, 3)] = name

        # Hangeul Proclamation Day
        name = "Hangeul Proclamation Day"
        self[date(year, 10, 9)] = name

        # Christmas Day
        name = "Christmas Day"
        self[date(year, 12, 25)] = name
Esempio n. 4
0
    def test_lunar_to_solar_19550329_leap_case_check_with_solar(self):
        lunar_date = LunarDate(1955, 3, 29, False)
        solar_date = lunar_date.solar()
        assert solar_date.year == 1955
        assert solar_date.month == 4
        assert solar_date.day == 21

        lunar_date_leap = LunarDate(1955, 3, 29, True)
        solar_date_leap = lunar_date_leap.solar()
        assert solar_date_leap.year == 1955
        assert solar_date_leap.month == 5
        assert solar_date_leap.day == 20
Esempio n. 5
0
 def koreanthanksgiving(self, year=None, dayoff=False, substitute=True):
     year = year if year else self.core.thisyear
     theday = LunarDate(year, 8, 15).toSolarDate()
     if dayoff:
         return self.core.threedays(theday)
     else:
         return theday
Esempio n. 6
0
def buddha(year=None):
    """
    :parm year: int
    :return: Buddha's Birthday Day
    """
    year = year if year else _year
    return LunarDate(year, 4, 8).toSolarDate()
Esempio n. 7
0
def chuseok(year=None):
    """
    :parm year: int
    :return: Thanksgiving Day of Korea
    """
    year = year if year else _year
    return LunarDate(year, 8, 15).toSolarDate()
Esempio n. 8
0
def lunar_newyear(year=None):
    """
    :parm year: int
    :return: Lunar New Year Day
    """
    year = year if year else _year
    return LunarDate(year, 1, 1).toSolarDate()
Esempio n. 9
0
    def get_queryset(self, *args, **kwargs):
        queryset_list = Event.objects.all()
        year_q = self.request.GET.get("year")
        month_q = self.request.GET.get("month")
        type_q = self.request.GET.get('type')

        if year_q and year_q != 'null':
            try:
                year_q = int(year_q)
            except:
                year_q = datetime.now().year
        else:
            year_q = datetime.now().year

        if type_q and type_q != 'null':
            queryset_list = queryset_list.filter(type=type_q)

        if month_q and month_q != 'null':
            month_q = int(month_q)
            filtered_queryset_list = []
            for each_query in queryset_list:
                if each_query.is_lunar:
                    date = LunarDate(year_q, each_query.origin_date.month,
                                     each_query.origin_date.day).toSolarDate()
                else:
                    date = each_query.origin_date
                if date.month == month_q:
                    filtered_queryset_list.append(each_query)
            return filtered_queryset_list
        return queryset_list
Esempio n. 10
0
    def _populate(self, year):
        # New Year's Day
        name = "New Year's Day"
        self[date(year, 1, 1)] = name

        # Vietnamese New Year
        name = "Vietnamese New Year"
        self[LunarDate(year - 1, 12, 30).toSolarDate()] = name
        self[LunarDate(year, 1, 1).toSolarDate()] = name
        self[LunarDate(year, 1, 2).toSolarDate()] = name
        self[LunarDate(year, 1, 3).toSolarDate()] = name
        self[LunarDate(year, 1, 4).toSolarDate()] = name
        self[LunarDate(year, 1, 5).toSolarDate()] = name

        # Hung Kings Commemorations
        name = "Hung Kings Commemorations"
        self[LunarDate(year, 3, 10).toSolarDate()] = name

        # Reunification Day
        name = "Reunification Day"
        self[date(year, 4, 30)] = name

        # Labor Day/International Workers' Day
        name = "Labor Day/International Workers' Day"
        self[date(year, 5, 1)] = name

        # National Day
        name = "National Day"
        self[date(year, 9, 2)] = name
Esempio n. 11
0
 def buddhasbirthday(self, year=None, dayoff=False, substitute=True):
     year = year if year else self.core.thisyear
     theday = LunarDate(year, 4, 8).toSolarDate()
     if dayoff:
         if 1975 <= year:
             return theday
         else:
             return None
     else:
         return theday
Esempio n. 12
0
 def validate_converted_date(self, value):
     date = value
     data = self.get_initial()
     request = self.context.get("request")
     year = request.GET.get('year')
     is_lunar = data.get("is_lunar")
     if is_lunar:
         if not year or year == 'null':
             year = datetime.now().year
         date = LunarDate(year, date.month, date.day).toSolarDate()
     return date
Esempio n. 13
0
    def _populate(self, year):
        # New Year's Day
        name = "New Year's Day"
        self[date(year, 1, 1)] = name

        # Vietnamese New Year
        name = "Vietnamese New Year"
        for offset in range(-1, 2, 1):
            try:
                ds = LunarDate(year - 1 + offset, 12, 30).toSolarDate()
            except ValueError:
                ds = LunarDate(year - 1 + offset, 12, 29).toSolarDate()
            if ds.year == year:
                self[ds] = name
            ds = LunarDate(year + offset, 1, 1).toSolarDate()
            if ds.year == year:
                self[ds] = name
            ds = LunarDate(year + offset, 1, 2).toSolarDate()
            if ds.year == year:
                self[ds] = name
            ds = LunarDate(year + offset, 1, 3).toSolarDate()
            if ds.year == year:
                self[ds] = name
            ds = LunarDate(year + offset, 1, 4).toSolarDate()
            if ds.year == year:
                self[ds] = name
            ds = LunarDate(year + offset, 1, 5).toSolarDate()
            if ds.year == year:
                self[ds] = name

        # Hung Kings Commemorations
        name = "Hung Kings Commemorations"
        for offset in range(-1, 2, 1):
            ds = LunarDate(year + offset, 3, 10).toSolarDate()
            if ds.year == year:
                self[ds] = name

        # Reunification Day
        name = "Reunification Day"
        self[date(year, 4, 30)] = name

        # Labor Day/International Workers' Day
        name = "Labor Day/International Workers' Day"
        self[date(year, 5, 1)] = name

        # National Day
        name = "National Day"
        self[date(year, 9, 2)] = name
Esempio n. 14
0
    def _populate(self, year):
        # New Year's Day
        name = "New Year's Day"
        self[date(year, 1, 1)] = name

        # Chinese New Year/ Spring Festival
        name = "Chinese New Year"
        for offset in range(-1, 2, 1):
            ds = LunarDate(year + offset, 1, 1).toSolarDate()
            if ds.year == year:
                self[ds] = name

        # Tomb-Sweeping Day
        name = "Tomb-Sweeping Day"
        self[date(year, 4, 4)] = name
        self[date(year, 4, 5)] = name

        # Labor Day
        name = "Labor Day"
        self[date(year, 5, 1)] = name

        # Dragon Boat Festival
        name = "Dragon Boat Festival"
        for offset in range(-1, 2, 1):
            ds = LunarDate(year + offset, 5, 5).toSolarDate()
            if ds.year == year:
                self[ds] = name

        # Mid-Autumn Festival
        name = "Mid-Autumn Festival"
        for offset in range(-1, 2, 1):
            ds = LunarDate(year + offset, 8, 15).toSolarDate()
            if ds.year == year:
                self[ds] = name

        # National Day
        name = "National Day"
        self[date(year, 10, 1)] = name
Esempio n. 15
0
    def getbirthday(self, year, month, day, hour, birthdaytype):

        f = open(datafolder + '万年历.txt')
        cal = pd.read_csv(f, header=0, index_col=0, encoding='utf-8')
        if birthdaytype == '阳历':
            l = cal.loc[dt.date(year, month, day).strftime('%Y-%m-%d')]

            return {'阳历':dt.datetime(year,month,day,hour),\
                    '阴历':{'生日':[l[0],l[1],l[2],hour]}
                    }
        elif birthdaytype == '阴历':

            l = LunarDate(year, month, day, isLeapMonth).toSolarDate()
            return {'阳历':dt.datetime(l[0],l[1],l[2],hour),\
                    '阴历':{'生日':[year,month,day,hour]}
                    }
Esempio n. 16
0
    def get_converted_date(self, obj):
        year = self.context.get('request').GET.get('year')
        is_lunar = obj.is_lunar

        try:
            year = int(year)
        except:
            year = datetime.now().year

        if is_lunar:
            if not year or year == 'null' or (year < 1900 or year >= 2050):
                year = datetime.now().year
            date = LunarDate(year, obj.origin_date.month,
                             obj.origin_date.day).toSolarDate()
        else:
            date = obj.origin_date
        return date.strftime("%m-%d")
Esempio n. 17
0
 def lunarnewyearsday(self, year=None, dayoff=False, substitute=True):
     year = year if year else self.core.thisyear
     theday = LunarDate(year, 1, 1).toSolarDate()
     if dayoff:
         if 2014 <= year:
             if substitute:
                 return self.core.threedays(theday)
             else:
                 return self.core.threedays(theday)
         elif 1989 <= year < 2014:
             return self.core.threedays(theday)
         elif 1985 <= year < 1989:
             return theday
         else:
             return None
     else:
         return theday
Esempio n. 18
0
def checkFriends(today):
    birthData = file('D:\OtherCode\Navigation\Tools\LearningPython\Email\Birthday.txt','r')
    Persons = []
    for line in birthData.readlines():
        name = line.split(' ')[0]
        birthday = line.split(' ')[1]
        isLunar = line.split(' ')[2]
        birthDate = datetime.datetime.strptime(birthday, '%Y-%m-%d')
        age = today.date().year - birthDate.date().year
        if string.atoi(isLunar):
            birthDateLunar = LunarDate(birthDate.date().year, birthDate.date().month, birthDate.date().day).toSolarDate()
            birthDate = datetime.datetime.combine(birthDateLunar, datetime.time())
        birthDate = birthDate.replace(year=today.year)
        timespan = birthDate - today
        if timespan.days >= -1 and timespan.days <= 2:
            Persons.append(Person(name, birthDate, timespan.days+1, age, string.atoi(isLunar)))

    return Persons
Esempio n. 19
0
    def change_year(year):
        if not (CP.spring_first and CP.spring_last and CP.spring_first.year
                == year and CP.spring_last.year == year):
            CP.spring_first = (LunarDate(year, 1, 1) -
                               timedelta(days=1)).toSolarDate()
            CP.spring_last = CP.spring_first + timedelta(days=7)

        if CP.current_year != year:
            d = datetime.now()
            year = d.year
            # month = d.month

            CP.regular_year_month = '^201\d((0\d)|(1[0-2]))(([0-2]\d)|(3[01]))'
            CP.regular_abb_year_month = '^1\d((0\d)|(1[0-2]))(([0-2]\d)|(3[01]))'
            CP.regular_year = '^201\d'
            CP.current_year = year

            CP.chinese_zodiac = get_chinese_zodiac()
            CP.zodiac_number_table = CP.zodiac_number_table[CP.chinese_zodiac::-1] + \
                                     CP.zodiac_number_table[:CP.chinese_zodiac:-1]
Esempio n. 20
0
    def get(self, request):
        result_event = None
        queryset_list = Event.objects.all()

        today = datetime.today() + timedelta(hours=9)
        if len(queryset_list) == 0:
            # 행사가 없을 경우
            return Response(status=404)

        converted_list = []
        for each_query in queryset_list:
            if each_query.is_lunar:
                date = LunarDate(today.year, each_query.origin_date.month,
                                 each_query.origin_date.day).toSolarDate()
            else:
                date = each_query.origin_date
            converted_list.append({
                'month': date.month,
                'day': date.day,
                'event': each_query
            })
        month_equal_query = filter_month(converted_list, today.month)
        if len(month_equal_query) != 0:
            day_gte_query = filter_gte_day(month_equal_query, today.day)
            if len(day_gte_query) != 0:
                result_event = day_gte_query[0]
        if result_event is None:
            month_gte_query = filter_gt_month(converted_list, today.month)
            if len(month_gte_query) != 0:
                result_event = month_gte_query[0]

        if result_event is None:
            result_event = converted_list[0]

        serializer = EventNearSerializer(result_event['event'],
                                         context={'request': request})
        return Response(serializer.data)
Esempio n. 21
0
 def lunar(year, month, day):
     return LunarDate(year, month, day).toSolarDate()
Esempio n. 22
0
    def _populate(self, year):
        # New Year's Day
        name = "New Year's Day"
        self[date(year, 1, 1)] = name

        # Magha Pujab
        # Note:
        # This holiday is determined by Buddhist calendar, which is not currently
        # available. Only hard coded version of this holiday from 2016 to 2019
        # is available.

        name = "Magha Pujab/Makha Bucha"
        if year == 2016:
            self[date(year, 2, 22)] = name
        elif year == 2017:
            self[date(year, 2, 11)] = name
        elif year == 2018:
            self[date(year, 3, 1)] = name
        elif year == 2019:
            self[date(year, 2, 19)] = name
        else:
            pass

        # Chakri Memorial Day
        name = "Chakri Memorial Day"
        april_6 = date(year, 4, 6).weekday()
        if april_6 == 5:
            self[date(year, 4, 6 + 2)] = name
        elif april_6 == 6:
            self[date(year, 4, 6 + 1)] = name
        else:
            self[date(year, 4, 6)] = name

        # Songkran Festival
        name = "Songkran Festival"
        self[date(year, 4, 14)] = name

        # Royal Ploughing Ceremony
        # arbitrary day in May

        # Buddha's Birthday
        name = "Buddha's Birthday"
        for offset in range(-1, 2, 1):
            ds = LunarDate(year + offset, 4, 15).toSolarDate()
            if ds.year == year:
                self[ds] = name

        # Coronation Day, removed in 2017
        name = "Coronation Day"
        if year < 2017:
            self[date(year, 5, 5)] = name

        # King Maha Vajiralongkorn's Birthday
        name = "King Maha Vajiralongkorn's Birthday"
        self[date(year, 7, 28)] = name

        # Asalha Puja
        # This is also a Buddha holiday, and we only implement
        # the hard coded version from 2006 to 2025
        # reference:
        # http://www.when-is.com/asalha_puja.asp
        warning_msg = "We only support Asalha Puja holiday from 2006 to 2025"
        warnings.warn(warning_msg, Warning)
        name = "Asalha Puja"
        if year == 2006:
            self[date(year, 7, 11)] = name
        elif year == 2007:
            self[date(year, 6, 30)] = name
        elif year == 2008:
            self[date(year, 7, 18)] = name
        elif year == 2009:
            self[date(year, 7, 7)] = name
        elif year == 2010:
            self[date(year, 7, 25)] = name
        elif year == 2011:
            self[date(year, 7, 15)] = name
        elif year == 2012:
            self[date(year, 8, 2)] = name
        elif year == 2013:
            self[date(year, 7, 30)] = name
        elif year == 2014:
            self[date(year, 7, 13)] = name
        elif year == 2015:
            self[date(year, 7, 30)] = name
        elif year == 2016:
            self[date(year, 7, 15)] = name
        elif year == 2017:
            self[date(year, 7, 9)] = name
        elif year == 2018:
            self[date(year, 7, 29)] = name
        elif year == 2019:
            self[date(year, 7, 16)] = name
        elif year == 2020:
            self[date(year, 7, 5)] = name
        elif year == 2021:
            self[date(year, 7, 24)] = name
        elif year == 2022:
            self[date(year, 7, 13)] = name
        elif year == 2023:
            self[date(year, 7, 3)] = name
        elif year == 2024:
            self[date(year, 7, 21)] = name
        elif year == 2025:
            self[date(year, 7, 10)] = name
        else:
            pass

        # Beginning of Vassa
        warning_msg = "We only support Vassa holiday from 2006 to 2020"
        warnings.warn(warning_msg, Warning)
        name = "Beginning of Vassa"
        if year == 2006:
            self[date(year, 7, 12)] = name
        elif year == 2007:
            self[date(year, 7, 31)] = name
        elif year == 2008:
            self[date(year, 7, 19)] = name
        elif year == 2009:
            self[date(year, 7, 8)] = name
        elif year == 2010:
            self[date(year, 7, 27)] = name
        elif year == 2011:
            self[date(year, 7, 16)] = name
        elif year == 2012:
            self[date(year, 8, 3)] = name
        elif year == 2013:
            self[date(year, 7, 23)] = name
        elif year == 2014:
            self[date(year, 7, 13)] = name
        elif year == 2015:
            self[date(year, 8, 1)] = name
        elif year == 2016:
            self[date(year, 7, 20)] = name
        elif year == 2017:
            self[date(year, 7, 9)] = name
        elif year == 2018:
            self[date(year, 7, 28)] = name
        elif year == 2019:
            self[date(year, 7, 17)] = name
        elif year == 2020:
            self[date(year, 7, 6)] = name
        else:
            pass

        # The Queen Sirikit's Birthday
        name = "The Queen Sirikit's Birthday"
        self[date(year, 8, 12)] = name

        # Anniversary for the Death of King Bhumibol Adulyadej
        name = "Anniversary for the Death of King Bhumibol Adulyadej"
        self[date(year, 10, 13)] = name

        # King Chulalongkorn Day
        name = "King Chulalongkorn Day"
        self[date(year, 10, 23)] = name

        # King Bhumibol Adulyadej's Birthday Anniversary
        name = "King Bhumibol Adulyadej's Birthday Anniversary"
        self[date(year, 12, 5)] = name

        # Constitution Day
        name = "Constitution Day"
        self[date(year, 12, 10)] = name

        # New Year's Eve
        name = "New Year's Eve"
        self[date(year, 12, 31)] = name
Esempio n. 23
0
    def _populate(self, year):
        # New Year's Day
        if not self.observed and date(year, 1, 1).weekday() in WEEKEND:
            pass
        else:
            self[date(year, 1, 1)] = "New Year's Day"

        # Chinese New Year/ Spring Festival
        name = "Chinese New Year"
        for offset in range(-1, 2, 1):
            ds = LunarDate(year + offset, 1, 1).toSolarDate()
            if ds.year == year:
                self[ds] = name

        # Day of Silence / Nyepi
        # Note:
        # This holiday is determined by Balinese calendar, which is not currently
        # available. Only hard coded version of this holiday from 2009 to 2019
        # is available.
        warning_msg = "We only support Nyepi holiday from 2009 to 2019"
        warnings.warn(warning_msg, Warning)

        name = "Day of Silence/ Nyepi"
        if year == 2009:
            self[date(year, 3, 26)] = name
        elif year == 2010:
            self[date(year, 3, 16)] = name
        elif year == 2011:
            self[date(year, 3, 5)] = name
        elif year == 2012:
            self[date(year, 3, 23)] = name
        elif year == 2013:
            self[date(year, 3, 12)] = name
        elif year == 2014:
            self[date(year, 3, 31)] = name
        elif year == 2015:
            self[date(year, 3, 21)] = name
        elif year == 2016:
            self[date(year, 3, 9)] = name
        elif year == 2017:
            self[date(year, 3, 28)] = name
        elif year == 2018:
            self[date(year, 3, 17)] = name
        elif year == 2019:
            self[date(year, 3, 7)] = name
        else:
            pass

        # Ascension of the Prophet
        name = "Ascension of the Prophet"
        for offset in range(-1, 2, 1):
            islam_year = from_gregorian(year + offset, 3, 17)[0]
            y, m, d = to_gregorian(islam_year, 7, 27)
            if y == year:
                self[date(y, m, d)] = name

        # Labor Day
        name = "Labor Day"
        self[date(year, 5, 1)] = name

        # Ascension of Jesus Christ
        name = "Ascension of Jesus"
        for offset in range(-1, 2, 1):
            ds = easter(year + offset) + rd(days=+39)
            if ds.year == year:
                self[ds] = name

        # Buddha's Birthday
        name = "Buddha's Birthday"
        for offset in range(-1, 2, 1):
            ds = LunarDate(year + offset, 4, 15).toSolarDate()
            if ds.year == year:
                self[ds] = name

        # Pancasila Day, since 2017
        if year >= 2017:
            name = "Pancasila Day"
            self[date(year, 6, 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, m2, d2)] = name
            if y2 == year:
                self[date(y2, m2, d2)] = name

        # Independence Day
        name = "Independence Day"
        self[date(year, 8, 17)] = 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

        # Islamic New Year
        name = "Islamic New Year"
        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

        # Birth of the Prophet
        name = "Birth of the Prophet"
        for offset in range(-1, 2, 1):
            islam_year = from_gregorian(year + offset, 11, 20)[0]
            y, m, d = to_gregorian(islam_year + 1, 3, 12)
            if y == year:
                self[date(y, m, d)] = name

        # Christmas
        self[date(year, 12, 25)] = "Christmas"
Esempio n. 24
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 = LunarDate(year + offset, 1, 1).toSolarDate()
            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 = LunarDate(year + offset, 4, 15).toSolarDate()
            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 (year >= 2017) and (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
Esempio n. 25
0
    locations = ['USA']  #'Russia','Germany','China','Brazil','SA','India'
    lock_year = 2020
    output_dir = '/storage/qliu6/trmm/1998_2017_merge/results/OMI/period/'
    for location in locations:
        if location == 'China':
            lock_month = 1
            lock_day = 25
            reopen_month = 4
            reopen_day = 9
            end_month = 6
            end_day = 30
            lock_doy = doy(lock_year, lock_month, lock_day)
            lunar_lock_date = LunarDate.fromSolarDate(int(lock_year),
                                                      int(lock_month),
                                                      int(lock_day))
            lstart = LunarDate(lunar_lock_date.year, 1, 1)
            ldoy_lock = (lunar_lock_date - lstart).days + 1

            reopen_doy = doy(lock_year, reopen_month, reopen_day)
            lunar_reopen_date = LunarDate.fromSolarDate(
                int(lock_year), int(reopen_month), int(reopen_day))
            ldoy_reopen = (lunar_reopen_date - lstart).days + 1
            print(ldoy_reopen)

            end_doy = doy(lock_year, end_month, end_day)
            lunar_end_date = LunarDate.fromSolarDate(int(lock_year),
                                                     int(end_month),
                                                     int(end_day))
            ldoy_end = (lunar_end_date - lstart).days + 1

            start = 330
Esempio n. 26
0
def lunar_new_year(year, offset=None, observance=None):
    dt = LunarDate(year, 1, 1).toSolarDate()
    if offset != None:
        dt = dt + timedelta(offset)
    return dt if observance == None else observance(dt)
Esempio n. 27
0
def double_nine_festival(year, offset=None, observance=None):
    dt = LunarDate(year, 9, 9).toSolarDate()
    if offset != None:
        dt = dt + timedelta(offset)
    return dt if observance == None else observance(dt)
Esempio n. 28
0
def mid_autumn_festival(year, offset=None, observance=None):
    dt = LunarDate(year, 8, 15).toSolarDate()
    if offset != None:
        dt = dt + timedelta(offset)
    return dt if observance == None else observance(dt)
Esempio n. 29
0
def dragon_boat_festival(year, offset=None, observance=None):
    dt = LunarDate(year, 5, 5).toSolarDate()
    if offset != None:
        dt = dt + timedelta(offset)
    return dt if observance == None else observance(dt)
Esempio n. 30
0
def buddha_birthday(year, offset=None, observance=None):
    dt = LunarDate(year, 4, 8).toSolarDate()
    if offset != None:
        dt = dt + timedelta(offset)
    return dt if observance == None else observance(dt)