コード例 #1
0
    def __get_week_number(self, target_date: datetime) -> int:
        """指定された日付からその月の「第N週」かを取得する

        Arguments:
            target_date {datetime} -- 第N週を取得する対象の日付情報

        Returns:
            int -- 第N週の`N`
              
        #この__get_week_number()の使い方
        #date = datetime(2019,6,3)
        #week_num = __get_week_number(date)

        """

        # カレンダーを日曜日始まりで作成する( firstweekday=6 は日曜日始まりを指定 )
        cl = Calendar(firstweekday=6)

        # ここからが実際に第N週かを取得する処理
        month_cl = cl.monthdays2calendar(target_date.year, target_date.month)
        week_num = 1
        for week in month_cl:
            for day in week:
                if day[0] == target_date.day:
                    return week_num
            week_num += 1
コード例 #2
0
def get_month(y, m):
    """ 
    Return list of month's weeks, which day 
    is a turple (<month day number>, <weekday number>) 
    """
    
    cal = Calendar()
    month = cal.monthdays2calendar(y, m)
    
    # Add additional num to every day which mark from 
    # this or from other day that day numer
    for week in range(len(month)):
        for day in range(len(month[week])):
            _day = month[week][day]
            if _day[0] == 0:
                this = 0
            else: 
                this = 1
            _day = (_day[0], _day[1], this)
            month[week][day] = _day
    
    # Days numbers of days from preious and next monthes
    # marked as 0 (zero), replace it with correct numbers
    # If month include 4 weeks it hasn't any zero
    if len(month) == 4:
        return month        
    
    quater = calc_quarter(y, m)
    
    # Zeros in first week    
    fcount = 0
    for i in month[0]:
        if i[0] == 0:
            fcount += 1
    
    # Zeros in last week
    lcount = 0
    for i in month[-1]:
        if i[0] == 0:
            lcount += 1
            
    if fcount:
        # Last day of prev month
        n = monthrange(quater[0][0], quater[0][1])[1]
        
        for i in range(fcount):
            month[0][i] = (n - (fcount - 1 - i), i, 0)
            
    if lcount:
        # First day of next month
        n = 1
        
        for i in range(lcount):
            month[-1][-lcount + i] = (n + i, 7 - lcount + i, 0)
            
    return month
コード例 #3
0
ファイル: calendar_data.py プロジェクト: mastodon667/ISP
def get_month(y, m):
    """ 
    Return list of month's weeks, which day 
    is a turple (<month day number>, <weekday number>) 
    """
    
    cal = Calendar()
    month = cal.monthdays2calendar(y, m)
    
    # Add additional num to every day which mark from 
    # this or from other day that day numer
    for week in range(len(month)):
        for day in range(len(month[week])):
            _day = month[week][day]
            if _day[0] == 0:
                this = 0
            else: 
                this = 1
            _day = (_day[0], _day[1], this)
            month[week][day] = _day
    
    # Days numbers of days from preious and next monthes
    # marked as 0 (zero), replace it with correct numbers
    # If month include 4 weeks it hasn't any zero
    if len(month) == 4:
        return month        
    
    quater = calc_quarter(y, m)
    
    # Zeros in first week    
    fcount = 0
    for i in month[0]:
        if i[0] == 0:
            fcount += 1
    
    # Zeros in last week
    lcount = 0
    for i in month[-1]:
        if i[0] == 0:
            lcount += 1
            
    if fcount:
        # Last day of prev month
        n = monthrange(quater[0][0], quater[0][1])[1]
        
        for i in range(fcount):
            month[0][i] = (n - (fcount - 1 - i), i, 0)
            
    if lcount:
        # First day of next month
        n = 1
        
        for i in range(lcount):
            month[-1][-lcount + i] = (n + i, 7 - lcount + i, 0)
            
    return month
コード例 #4
0
def find_mondays(year, month):
    cal = Calendar()
    mondays = list()
    for week in cal.monthdays2calendar(year, month):
        for day in week:
            (monthday, weekday) = day
            if (weekday == 1 and monthday > 0):
                mondays.append(
                    datetime.date(year=year, month=month, day=monthday))
    return mondays
コード例 #5
0
def find_mondays(year, month):
    cal = Calendar()
    mondays = list()
    for week in cal.monthdays2calendar(year, month):
        for day in week:
            (monthday, weekday) = day
            if (weekday == 1 and monthday > 0):
                mondays.append(datetime.date(year=year,
                                             month=month,
                                             day=monthday))
    return mondays
コード例 #6
0
ファイル: schedule_tags.py プロジェクト: rob-b/Jung
def calendar(tasks, date_obj=date.today()):
    month, year = date_obj.month, date_obj.year
    tasks = tasks

    dates = Calendar()
    weeks = [process_week(week, month, year) for week in
             dates.monthdays2calendar(year, month)]
    weeks = [check_tasks(week, tasks) for week in weeks]
    return {
        'weeks': weeks,
        'date_obj': date_obj,
    }
コード例 #7
0
def get_month_wireframe(year, month, day):
    """
    Utility function for getting the layout of month days
    """
    year, month, day = int(year), int(month), int(day)
    cal = Calendar()
    monthly_days = cal.monthdays2calendar(year, month)
    return {
        'monthly_days': monthly_days,
        'year': year,
        'month': MONTHS[month],
        'today': day,
    }
コード例 #8
0
def get_month_wireframe(year, month, day):
    """
    Utility function for getting the layout of month days
    """
    year, month, day = int(year), int(month), int(day)
    cal = Calendar()
    monthly_days = cal.monthdays2calendar(year, month)
    return {
        'monthly_days': monthly_days,
        'year': year,
        'month': MONTHS[month],
        'today': day,
    }
コード例 #9
0
def get_week_wireframe(year, month, day):
    """
    Utility function for returning the current week
    """
    year, month, day = int(year), int(month), int(day)
    cal = Calendar()
    monthly_days = cal.monthdays2calendar(year, month)
    current_week = None
    for week in monthly_days:
        if [i for i, v in enumerate(week) if v[0] == day]:
            current_week = week
    return {
        'week': current_week,
        'year': year,
        'month': MONTHS[month],
        'today': day,
    }
コード例 #10
0
    def change_day(self, year, month):
        """最初に各ラベルを初期化"""
        self.clr_btn_txt()

        cl = Calendar(firstweekday=6)  # タプル(日付,曜日)が週毎に返される
        month_cl = cl.monthdays2calendar(year, month)
        i = 1  # "1"週目で初期化
        j = 0
        for week in month_cl:
            # weekは[1週目],[2週目],...
            for day in week:
                # dayは週毎の各日の(日付,曜日)
                if day[1] + 1 == 7: j = 0
                else: j = day[1] + 1

                if not day[0] == 0: self.set_btn_txt(i, j, str(day[0]))
            i += 1
コード例 #11
0
def get_week_wireframe(year, month, day):
    """
    Utility function for returning the current week
    """
    year, month, day = int(year), int(month), int(day)
    cal = Calendar()
    monthly_days = cal.monthdays2calendar(year, month)
    current_week = None
    for week in monthly_days:
        if [i for i, v in enumerate(week) if v[0] == day]:
            current_week = week
    return {
        'week': current_week,
        'year': year,
        'month': MONTHS[month],
        'today': day,
    }
コード例 #12
0
def calendar_page():
    calendar = Calendar()
    month = int(request.args.get("month"))
    year = int(request.args.get("year"))

    weeks = list(calendar.monthdays2calendar(year, month))
    
    while len(weeks) < 6:
        weeks.append([(0, i) for i in range(7)])

    data = {}
    data["weekdays"] = list(day_name)
    data["month"] = month
    data["month_name"] = month_name[month]
    data["year"] = str(year)

    return render_template("calendar.html", weeks=weeks, data=data)
コード例 #13
0
ファイル: models.py プロジェクト: karvox/pontox
    def horas_semana(self, ano, mes, semana):

        total = timedelta(hours=0, minutes=0)

        calendario = Calendar()
        listasemana = calendario.monthdays2calendar(year=ano, month=mes)

        try:
            for dia in listasemana[semana]:
                if not dia[0] == 0:
                    diatrabalhado = self.diatrabalho_set.filter(data=datetime(year=ano, month=mes, day=dia[0]))
                    if diatrabalhado:
                        diatrabalhado = diatrabalhado[0]
                        total += diatrabalhado.horas_trabalhadas()

            return total
        except IndexError:
            return timedelta(hours=0, minutes=0)
コード例 #14
0
def meetup_day(year, month, weekday, nth_day):

    cal = Calendar()
    # Get the calendar for given month and year
    weeks_and_days = cal.monthdays2calendar(year, month)

    # Day string (Monday) --> number
    weekday_num = week_day_to_num(weekday)

    # Week string to number
    nth_week = dict(zip('1st 2nd 3rd 4th last'.split(), range(5)))

    final_day = 0

    if nth_day in nth_week:

        # Make the string an int
        week_num = nth_week[nth_day]

        # Check if there is a "Monday" on first week
        if weeks_and_days[0][weekday_num][0]:
            final_day = weeks_and_days[week_num][weekday_num][0]

        else:
            final_day = weeks_and_days[week_num + 1][weekday_num][0]

    elif nth_day == "teenth":

        # Check if in second week
        if weeks_and_days[1][weekday_num][0] >= 10:
            final_day = weeks_and_days[1][weekday_num][0]

        # Check if third week
        elif weeks_and_days[2][weekday_num][0] >= 10:
            final_day = weeks_and_days[2][weekday_num][0]

        else:
            final_day = weeks_and_days[3][weekday_num][0]

    return date(year, month, final_day)
コード例 #15
0
def _get_month(current_year, current_month):
    """
    Return list of month's weeks, which day
    is a turple (<month day number>, <weekday number>)
    """

    cal = Calendar()
    month = cal.monthdays2calendar(current_year, current_month)

    # Append to month's days a bool value to know if the day is in month
    for week_number, week in enumerate(month):
        for day in week:
            in_this_month = 1
            day_number, weekday_number = day

            if not day_number:
                in_this_month = 0

            day = (day_number, weekday_number, in_this_month)

            month[week_number][weekday_number] = day

    if len(month) == 4:
        return month

    quarter = calc_quarter(current_year, current_month)

    # Zeros in first week
    first_week_zeros = 0
    first_week = month[0]

    for day in first_week:
        in_this_month = day[-1]
        if not in_this_month:
            first_week_zeros += 1

    # Zeros in last week
    last_week_zeros = 0
    last_week = month[-1]

    for day in last_week:
        in_this_month = day[-1]
        if not in_this_month:
            last_week_zeros += 1

    if first_week_zeros:
        # Last day of prev month
        previous_month = quarter[0]
        _, n_days = monthrange(*previous_month)

        for i in range(first_week_zeros):
            weekday = n_days - (first_week_zeros - 1 - i)
            month[0][i] = (weekday, i, 0)

    if last_week_zeros:
        for i in range(last_week_zeros):
            month[-1][-last_week_zeros + i] = (
                i + 1,
                7 - last_week_zeros + i,
                0,
            )

    return month