我有“%Y%m%d”格式的字符串(即今天,2016年5月11日的“20160511”)。并且需要以编程方式(在python中)找出另一个日期(比方说 - “20160504”或“20160512”)作为参数发送到属于当前周的函数(当前是今天在5月8日星期日开始的那一周, 2016年 - 让我们假设它是本周的美国方式,从星期日开始,即第一个应该返回False,第二个应该返回 - True。
我提出的所有想法都来计算那个星期日的日期,并将传递的参数作为参数进行比较,然后,如果将来是这一天,那么它不是在本周的星期六之后,但它看起来不够优雅(或“pythonic”)。
答案 0 :(得分:7)
您可以将isodate
方法用于日期时间对象:
datetime.datetime.strptime('20160511','%Y%m%d').isocalendar()[1]
它将以整数形式返回当前周,以便您可以比较两个日期以查看它们是否属于同一周。这是一个可以在两个不同日期执行此操作的函数:
import datetime
def same_week(date1, date2):
d1 = datetime.datetime.strptime(date1,'%Y%m%d')
d2 = datetime.datetime.strptime(date2,'%Y%m%d')
return d1.isocalendar()[1] == d2.isocalendar()[1] \
and d1.year == d2.year
要获取当天,请使用datetime.datetime.today()
。因此,重写上述功能可以完全满足您的要求:
import datetime
def same_week(dateString):
'''returns true if a dateString in %Y%m%d format is part of the current week'''
d1 = datetime.datetime.strptime(dateString,'%Y%m%d')
d2 = datetime.datetime.today()
return d1.isocalendar()[1] == d2.isocalendar()[1] \
and d1.year == d2.year