비슷한 문제를 해결하는 게시물이 많이 있지만 문제가있는 제약 조건은 모두 동일하지 않습니다.Python2 : 일요일 - 토요일 주 시작/종료 날짜 주어진 날짜 범위
데이터 센터에서 주 단위로 데이터를 가져 오는 스크립트를 작성하고 있습니다. 가져 오는 주간은 외부 사용자가 내 스크립트에 제공 한 날짜 범위에 따라 다릅니다. 데이터 센터의 주간은 일요일부터 토요일까지입니다. 파이썬의 주간은 월요일부터 일요일까지입니다.
날짜 범위의 각 날짜 이후의 일요일과 토요일 날짜를 가져올 수 있어야합니다. 문제를 복잡하게 만들려면 주 시작일이나 주말 종료일이 요청 된 범위를 벗어날 수 없습니다. 이렇게하면 해당 범위의 각 날짜에서 하루를 간단히 빼는 것을 방지 할 수 있습니다.
일부 예제 시나리오 :
예 1)
requested_date_range = [datetime(2016,7,1,0,0),datetime(2016,8,5,0,0)]
what I get from the various Python utilities (dateutil, datetime_periods, etc):
[
[datetime(2016,6,27,0,0),datetime(2016,7,3,0,0)],
[datetime(2016,7,4,0,0),datetime(2016,7,10,0,0)],
[datetime(2016,7,11,0,0),datetime(2016,7,17,0,0)],
[datetime(2016,7,18,0,0),datetime(2016,7,24,0,0)],
[datetime(2016,7,25,0,0),datetime(2016,7,31,0,0)],
[datetime(2016,8,1,0,0),datetime(2016,8,7,0,0)]
]
what I actually need:
[
[datetime(2016,7,1,0,0),datetime(2016,7,2,0,0)], #"week" starts on first day of requested range and ends on the following Saturday
[datetime(2016,7,3,0,0),datetime(2016,7,9,0,0)], #Sunday through Saturday
[datetime(2016,7,10,0,0),datetime(2016,7,16,0,0)], #Sunday through Saturday
[datetime(2016,7,17,0,0),datetime(2016,7,23,0,0)], #Sunday through Saturday
[datetime(2016,7,24,0,0),datetime(2016,7,30,0,0)], #Sunday through Saturday
[datetime(2016,7,31,0,0),datetime(2016,8,5,0,0)] #"week" starts on Sunday and ends on last day of requested range
]
예 2)
requested_date_range = [datetime(2016,7,3,0,0),datetime(2016,8,7,0,0)]
what I get from the various Python utilities (dateutil, datetime_periods, etc):
[
[datetime(2016,6,27,0,0),datetime(2016,7,3,0,0)],
[datetime(2016,7,4,0,0),datetime(2016,7,10,0,0)],
[datetime(2016,7,11,0,0),datetime(2016,7,17,0,0)],
[datetime(2016,7,18,0,0),datetime(2016,7,24,0,0)],
[datetime(2016,7,25,0,0),datetime(2016,7,31,0,0)],
[datetime(2016,8,1,0,0),datetime(2016,8,7,0,0)]
]
what I actually need:
[
[datetime(2016,7,3,0,0),datetime(2016,7,9,0,0)], #"week" starts on first day of requested range
[datetime(2016,7,10,0,0),datetime(2016,7,16,0,0)], #Sunday through Saturday
[datetime(2016,7,17,0,0),datetime(2016,7,23,0,0)], #Sunday through Saturday
[datetime(2016,7,24,0,0),datetime(2016,7,30,0,0)], #Sunday through Saturday
[datetime(2016,7,31,0,0),datetime(2016,8,6,0,0)], #Sunday through Saturday
[datetime(2016,8,7,0,0),datetime(2016,8,7,0,0)] #"week" ends up being only one day long because the max requested date falls on a Sunday
]
시작일을 설정할 수 있다고 생각합니다. 내가 그것을 파헤 치자. – Vasif
calendar.setfirstweekday (calendar.SUNDAY)를 사용할 수 있습니다. 불행히도, 캘린더 클래스에는 주 시작/종료 날짜를 반환하는 함수가 없습니다. 적어도 나는 그것을 발견 할 수 없었다. –