Ejemplo n.º 1
0
def add_time(start_dt: datetime.date, delta, quantity):
    if isinstance(delta, Number):
        return start_dt + timedelta(seconds=delta * quantity)
    quantity = delta[0] * quantity
    if delta:
        if delta[1] == 'month':
            years = int(quantity / 12)
            months = quantity - years * 12
            months_result = start_dt.month + months
            if months_result < 1:
                years -= 1
                months_result += 12
            elif 12 < months_result:
                years += 1
                months_result -= 12
            years_result = start_dt.year + years
            last_calendar_day = calendar.monthrange(years_result,
                                                    months_result)[1]
            return start_dt.replace(day=min(start_dt.day, last_calendar_day),
                                    month=months_result,
                                    year=years_result)
        else:  # elif delta[1] == 'year':
            return start_dt.replace(year=start_dt.year + quantity, )
    log.warning('"None" timedelta supplied when adding time, '
                'not adding any time')
    return start_dt
Ejemplo n.º 2
0
def get_beginning_and_end_of_month(date: datetime.date):
    """
    Get first and last day of a month
    :param date: date in a month to get the first and last date of
    :return: tuple of first and last day of a month
    """
    start = date.replace(day=1)
    end = date.replace(day=calendar.monthrange(date.year, date.month)[1])
    return start, end
Ejemplo n.º 3
0
def is_first_working_day(today: datetime.date) -> bool:
    """指定日がその月の最初の平日か判定する"""
    for target_day in range(1, today.day + 1):
        if is_working_day(today.replace(day=target_day)):
            if target_day == today.day:
                # その月で最初の平日である
                return True
            # その月で2回目以降の平日である
            return False
    # 平日ではない
    return False
Ejemplo n.º 4
0
 def subtract_one_month(self, dt: datetime.date):
     dt1 = dt.replace(day=1)
     dt2 = dt1 - timedelta(days=1)
     dt3 = dt2.replace(day=1)
     return dt3