다음 두 변수가 주어지면 한주의 시작 (날짜 시간)을 찾아야합니다.
now
-현재 날짜 시간START_DAY
- "주 시작"으로 간주하는 요일 (0-6, 여기서 0은 월요일, 6은 일요일)우리는 루핑을 사용할 수 있지만 이것은 간단한 문제에 대해 너무 많은 단계처럼 보입니다.
week_start = datetime(now.year, now.month, now.day)
while week_start.weekday() != START_DAY:
week_start = week_start - timedelta(days=1)
START_DAY
항상 0
(월요일) 이면 정말 쉽습니다 .
week_start = datetime(now.year, now.month, now.day) - timedelta(days=now.weekday())
또는 항상 6
(일요일) :
week_start = datetime(now.year, now.month, now.day) - timedelta(days=(0 if now.weekday() == START_DAY else now.weekday() + 1))
의 값에 대한주의 시작을 계산하는 간단한 방법은 무엇입니까 START_DAY
?
START_DAY
과 사이의 일 수 now
는 now.weekday() - START_DAY
입니다. 그러나 오늘이 이전 START_DAY
이면 (예 : 오늘이 수요일이고 START_DATE
6 = 일요일 인 경우) 해당 숫자는 음수가되고 오늘에서 빼면 미래의 날짜가됩니다.
아마 원하지 않을 것이므로 모듈로 7의 차이가 필요합니다.
week_start = now.date() - timedelta(days=(now.weekday() - START_DAY) % 7)
예 :
>>> from datetime import datetime, timedelta
>>> now = datetime(2017, 2, 1)
>>> print(now.strftime("%d/%m/%y (%a)"))
01/02/17 (Wed)
>>> for START_DAY in range(7):
... start_week = now.date() - timedelta(days=(now.weekday() - START_DAY) % 7)
... print(start_week.strftime("%d/%m/%y (%a)"))
...
30/01/17 (Mon)
31/01/17 (Tue)
01/02/17 (Wed)
26/01/17 (Thu)
27/01/17 (Fri)
28/01/17 (Sat)
29/01/17 (Sun)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다