假设我有一个特定年份的周数(例如2014年的第6周)。
如何将此转换为该周开始的星期一的日期?
我想到的一个蛮力解决方案是经历一年中的所有星期一:
date1 = datetime.date(1,1,2014)
date2 = datetime.date(12,31,2014)
def monday_range(date1,date2):
while date1 < date2:
if date1.weekday() == 0:
yield date1
date1 = date1 + timedelta(days=1)
并存储从一年的第一个星期一到最后一个星期一的哈希,但这不会这样做,因为,一年的第一周可能不包含星期一。
答案 0 :(得分:6)
您可以将数据提供给time.asctime()
。
>>> import time
>>> week = 6
>>> year = 2014
>>> atime = time.asctime(time.strptime('{} {} 1'.format(year, week), '%Y %W %w'))
>>> atime
'Mon Feb 10 00:00:00 2014'
修改强>
要将其转换为datetime.date
对象:
>>> datetime.datetime.fromtimestamp(time.mktime(atime)).date()
datetime.date(2014, 2, 10)
答案 1 :(得分:4)
一个简单的函数来获取星期一,给定一个日期。
def get_monday(dte):
return dte - datetime.timedelta(days = dte.weekday())
一些示例输出:
>>> get_monday(date1)
datetime.date(2013, 12, 30)
>>> get_monday(date2)
datetime.date(2014, 12, 29)
在循环中调用此函数。
答案 2 :(得分:2)
所有关于strptime \ strftime:
https://docs.python.org/2/library/datetime.html
mytime.strftime('%U') #for W\C Monday
mytime.strftime('%W') #for W\C Sunday
抱歉错误的方式
from datetime import datetime
mytime=datetime.strptime('2012W6 MON'. '%YW%U %a')
Strptime需要同时查看年份和工作日。我假设您已经获得了每周数据,所以只需添加“mon”即可。到字符串的末尾。 享受
答案 3 :(得分:0)
我们可以将星期数添加到一年的第一天。
>>> import datetime
>>> from dateutil.relativedelta import relativedelta
>>> week = 40
>>> year = 2019
>>> date = datetime.date(year,1,1)+relativedelta(weeks=+week)
>>> date
datetime.date(2019, 10, 8)