![](/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.