什么是pythonic方式来确定给定日期是否属于当前周?

ear*_*ter 2 python

我有"%Y%m%d"格式的字符串(即今天,2016年5月11日的"20160511").并且需要以编程方式(在python中)找出另一个日期(比方说 - "20160504"或"20160512")作为参数发送到属于当前周的函数(当前是今天在5月8日星期日开始的那一周, 2016年 - 让我们假设它是一周的美式方式,从星期日开始,即第一个应该返回False,第二个应该返回 - True.

我想出的所有想法都来计算那个星期日的日期,并将传递的参数作为参数进行比较,然后,如果是将来的那一天,它不是在本周的星期六之后,但它没有看起来不够优雅(或"pythonic").

rof*_*fls 7

您可以将该isodate方法用于datetime对象:

datetime.datetime.strptime('20160511','%Y%m%d').isocalendar()[1]
Run Code Online (Sandbox Code Playgroud)

它将以整数形式返回当前周,以便您可以比较两个日期以查看它们是否属于同一周.这是一个函数,可以在两个不同的日期执行此操作:

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
Run Code Online (Sandbox Code Playgroud)

要获得当天,请使用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    
Run Code Online (Sandbox Code Playgroud)