Как определить, находимся ли мы в первой неделе текущего месяца - PullRequest
3 голосов
/ 01 июля 2010

Я пишу небольшую служебную функцию в Python, которая возвращает логическое значение, указывающее, наступает ли сегодня первая неделя месяца.

Это то, что у меня пока есть:

import calendar
import time
y, m = time.localtime(time.time())[:2]
data = calendar.month(y, m)

In [24]: type(temp)
Out[24]: <type 'str'>

In [25]: print temp
-------> print(temp)
     July 2010
Mo Tu We Th Fr Sa Su
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Я хочу упаковать эту строку в список списков.На самом деле, это только первая строка, которую я хочу, так как это первая неделя, но я мог бы обобщить функцию так, чтобы она позволяла мне проверить, находимся ли мы на n-й неделе, где 1

Как только у меня есть список списков, я собираюсь проверить, является ли текущий день элементом списка.

Может кто-нибудь показать, как я могу получить выходные данные изМетод calendar.month () в список списков?

И последнее, но не менее важное: возможно, я изобретаю колесо здесь.Если есть встроенный способ сделать это (или, возможно, более Pythonic способ сделать это) кто-то, пожалуйста, дайте мне знать.

Ответы [ 3 ]

5 голосов
/ 01 июля 2010

Вот простая функция, которая скажет вам, находится ли сегодня первая неделя месяца:

from datetime import date

def first_week():
    today = date.today()
    return today.weekday() - today.day >= -1

Это проще, чем обработка вывода вызова в библиотеку календаря; просто возьмите день недели в числовой форме (которая начинается с 0), а затем вычтите день месяца (который начинается с 1). Если результат равен хотя бы -1, вы находитесь на первой неделе.

2 голосов
/ 01 июля 2010

Вот полное решение с использованием стандартной библиотеки.

import calendar
import datetime

def in_first_week(today):
    """Expects a datetime object"""
    weeks = calendar.monthcalendar(today.year, today.month)
    firstweek = weeks[0]
    return today.day in firstweek

today = datetime.date.today()
# => datetime.date(2010, 7, 1)
print in_first_week(today)
# => True

then = datetime.date(2010,7,10)
print in_first_week(then)
# => False
2 голосов
/ 01 июля 2010
calendar.monthcalendar(2010,7)

Возвращает список списков как таковой:

[[0, 0, 0, 1, 2, 3, 4], [5, 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24, 25], [26, 27, 28, 29, 30, 31, 0]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...