簡體   English   中英

如何使用python將日歷周偏移2天

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM