我在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&lt; n&lt; 5(取决于当然的月份)。
一旦我有了一个列表列表,我就打算检查当前日期是否是列表中的一个元素。
有人能说明如何将calendar.month()方法的输出转换为列表列表吗?
最后但并非最不重要,我可能会在这里重新发明轮子。如果有这样做的内置方式(或者更多的Pythonic方式)请有人告诉我。
答案 0 :(得分:5)
这是一个简单的功能,可以告诉你今天是否在这个月的第一周:
from datetime import date
def first_week():
today = date.today()
return today.weekday() - today.day >= -1
这比处理日历库中的调用输出更简单;只需以数字形式(从0开始)获取星期几,然后减去月中的某一天(从1开始)。如果结果至少为-1,那么你就在第一周。
答案 1 :(得分:2)
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]]
答案 2 :(得分:2)
以下是使用标准库的完整解决方案。
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