![](/img/trans.png)
[英]How to change the default first week day number to 0 in Calendar module Python
[英]How to change the calendar week by offset of 2 days using python
我需要从日期中获取偏移2的日历周。通常,ISO日历通过将星期一作为第1天到第7天作为星期日来返回日历周。但是我想将星期六作为第一天,将星期五作为星期五作为一周中的最后一天。
我使用了以下代码:
from datetime import datetime, timedelta, date
x2='2014-12-28'
year,month,day = x2.split('-')
CW = date(int(year), int(month), int(day)).isocalendar()[1]
print CW
实际输出: 52
。
但是我需要输出为1。在ISO日历中,它们已将日历周1用作日期“ '29, 30, 31, 1, 2, 3, 4'
。 但是我需要日历周1具有以下日期'27, 28, 29, 30, 31, 1, 2'
。 就像我需要两天的偏移量一样。
您可以使用日历模块。 例:
import calendar
(calendar.weekday(2015, 2, 6) - calendar.SATURDAY) % 7
我提供了一个解决方案,可以在访问ISO日历之前添加一段代码。 我需要偏移两天,因此最初我将天数增加了两天,然后根据我的要求使用新的日期来获取日历周,该日历周从星期六到星期五开始(但通常从星期一开始到星期日)。 请检查此代码,然后告诉我是否可以。 我这样做是因为无法更改ISO日历的源代码。
from datetime import datetime, timedelta, date
def LEAP(year):
year = year % 4
if year == 0: #( y % 4 == 0 ) and ( ( y % 100 != 0 ) or ( y % 400 == 0 ) )
LEAP = 1
else:
LEAP = 0
return LEAP
x2 = '2015-10-2'
year2,month2,day2 = x2.split('-')
day = int(day2)
month = int(month2)
year=int(year2)
if (month == 1 and day == 30):
day1 = 1
month = month + 1
elif (month == 3 and day == 30):
day1 = 2
month = month + 1
elif (month == 5 and day == 30):
day1 = 2
month = month + 1
elif (month == 7 and day == 30):
day1 = 2
month = month + 1
elif (month == 8 and day == 30):
day1 = 2
month = month + 1
elif (month == 10 and day == 30):
day1 = 2
month = month + 1
elif (month == 1 and day == 31):
day1 = 3
month = month + 1
elif (month == 3 and day == 31):
day1 = 3
month = month + 1
elif (month == 5 and day == 31):
day1 = 3
month = month + 1
elif (month == 7 and day == 31):
day1 = 2
month = month + 1
elif (month == 8 and day == 31):
day1 = 3
month = month + 1
elif month == 10 and day == 31:
day1 = 2
month = month + 1
elif month == 12 and day == 30:
day1 = 2
month = 1
year = year + 1
elif month == 12 and day == 31:
day1 = 3
month = 1
year = year + 1
elif month == 4 and day == 29:
day1 = 2
month = month + 1
#return day1
elif month == 6 and day == 29:
day1 = 2
month = month + 1
elif month == 9 and day == 29:
day1 = 2
month = month + 1
elif month == 11 and day == 29:
day1 = 2
month = month + 1
elif month == 4 and day == 30:
day1 = 3
month = month + 1
#return day1
elif month == 6 and day == 30:
day1 = 3
month = month + 1
elif month == 9 and day == 30:
day1 = 3
month = month + 1
elif month == 11 and day == 30:
day1 = 3
month = month + 1
elif LEAP(int(year)) and day > 25 and month ==2:
if month == 2 and day == 26:
#if LEAP(int(year)):
day1 = 29
month = month
elif month == 2 and day == 27:
#if LEAP(int(year)):
day1 = 1
month = month + 1
elif month == 2 and day == 28:
#if LEAP(int(year)):
day1 = 2
month = month + 1
elif month == 2 and day == 29: #and LEAP(int(year)):
day1 = 3
month = month + 1
elif not LEAP(int(year)) and day > 25 and month == 2:
if month == 2 and day == 26:
#if not LEAP(int(year)):
day1 = 1
month = month + 1
elif month == 2 and day == 27:
#if not LEAP(int(year)):
day1 = 1
month = month + 1
elif month == 2 and day == 28:
#if not LEAP(int(year)):
day1 = 2
month = month + 1
else:exit
else:
#print 'test'
day1= day+ 2
month = month
year = year
CW = date(int(year), int(month), day1).isocalendar()[1]
print CW
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.