Python周数,其中所有周都有7天,不考虑年份的滚动

Python周数,其中所有周都有7天,不考虑年份的滚动,python,mysql,date,Python,Mysql,Date,我有一个应用程序,我需要测量一年中的周数,我希望所有周都有7天,不管这些天是否在不同的年份中 例如,我希望从2012年12月30日到2013年1月5日的所有日子都在同一周内 但在python中这并不是直接做到的,因为正如datetime文档所述: 我不希望将“新年中第一个星期日之前的所有日子”视为第0周。第0周的时间将少于7天,2012年最后一周也是如此 因此,Python返回: import datetime datetime.date(2012, 12, 31).strftime('%

我有一个应用程序,我需要测量一年中的周数,我希望所有周都有7天,不管这些天是否在不同的年份中

例如,我希望从2012年12月30日到2013年1月5日的所有日子都在同一周内

但在python中这并不是直接做到的,因为正如
datetime
文档所述:

我不希望将“新年中第一个星期日之前的所有日子”视为第0周。第0周的时间将少于7天,2012年最后一周也是如此

因此,Python返回:

 import datetime 
 datetime.date(2012, 12, 31).strftime('%Y-%U')
 >>> 2012-53

 import datetime 
 datetime.date(2013, 01, 01).strftime('%Y-%U')
 >>> 2013-00
即使这两天是星期一和星期二,也应该是在同一周,一周从星期天开始,到星期六结束

相反,我想要的功能是在模式2(doc)中镜像MySQL对
yearweek
的功能

比如说,

 mysql> select yearweek('2013-01-01', 2) as week;
 +--------+                                      
 | week   |                                      
 +--------+                                      
 | 201253 |                                      
 +--------+                                      
 1 row in set (0.64 sec)                         
请注意,即使日期为2013年,该周也被视为201253年,保证2012年最后一周为7天

这已经在Python中实现了吗

下列日历仅供参考:

   December 2012     
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                   

     January 2013     
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          

isoweek模块提供您所需的一切

从文件中:

from isoweek import Week
w = Week(2011, 20)
print "Week %s starts on %s" % (w, w.monday())

print "Current week number is", Week.thisweek().week
print "Next week is", Week.thisweek() + 1

我想问一下,为什么你需要有自己的一周处理逻辑。根本原因是什么

回到问题上来。如何通过自己的代码处理逻辑: yu=datetime.date(2013,1,1).strftime(“%Y-%U”)。拆分(“-”) 如果(int(yu[1])==0:
week=(datetime.date(2012,12,31).strftime(“%Y-”).split(“-”)[1]

我没有找到一种本地方法来实现这一点,所以我只编写了一些非常简单的代码来测试这一周是否是第零周,这意味着该日期在本年中,但在本年第一个完整周的开始日期之前,同样地,日期是在前一年的最后一周

def get_week(date):                                             
    date = datetime.datetime.strptime(date, '%Y-%m-%d')              
    week = date.strftime('%Y%U')     

    if week[-2:] == '00':                                       
        year = week[:-2]                                        
        prev_year = int(year) - 1                                    
        week = datetime.date(prev_year, 12, 31).strftime('%Y%U')
    else:                                                            
        pass                                                         

    return week                                                 

我看不出这是如何回答这个问题的。我想输入一个日期并获取一周。对于测试,2012-12-30至2013-01-05应为2012年第53周。isoweek是如何做到这一点的?
def get_week(date):                                             
    date = datetime.datetime.strptime(date, '%Y-%m-%d')              
    week = date.strftime('%Y%U')     

    if week[-2:] == '00':                                       
        year = week[:-2]                                        
        prev_year = int(year) - 1                                    
        week = datetime.date(prev_year, 12, 31).strftime('%Y%U')
    else:                                                            
        pass                                                         

    return week