[python] 파이썬에서 주 번호를 얻는 방법?

파이썬으로 6 월 16 일 (wk24)의 현재 주 번호를 확인하는 방법은 무엇입니까?



답변

datetime.dateisocalendar()달력 주를 포함하는 튜플을 반환 하는 메서드 가 있습니다 .

>>> import datetime
>>> datetime.date(2010, 6, 16).isocalendar()[1]
24

datetime.date.isocalendar () 는 주어진 날짜 인스턴스에 대해 연도, 주 번호 및 주일을 포함하는 튜플을 반환하는 인스턴스 메소드입니다.


답변

datetime에서 주 번호를 문자열로 직접 가져올 수 있습니다.

>>> import datetime
>>> datetime.date(2010, 6, 16).strftime("%V")
'24'

또한 다음에 대한 strftime매개 변수를 변경하여 연중 주 번호의 다른 “유형”을 얻을 수 있습니다 .

%U연도의 주 번호 (일요일의 첫 번째 요일) 를 0으로 채워진 10 진수로 나타냅니다. 첫 번째 일요일 이전의 새해의 모든 날은 0 주로 간주됩니다. 예 : 00 , 01,…, 53

%W-연도의 주 번호 ( 월요일 의 첫 번째 요일)를 10 진수로 나타냅니다. 첫 번째 월요일 이전의 새해의 모든 날은 0 주로 간주됩니다. 예 : 00 , 01,…, 53

[…]

( Python 3.6에 추가되어 일부 배포판의 Python 2.7로 백 포트 됨 ) 편의를 위해 C89 표준에 필요하지 않은 몇 가지 추가 지시문이 포함되어 있습니다. 이 매개 변수는 모두 ISO 8601 날짜 값에 해당합니다. strftime()방법 과 함께 사용하면 일부 플랫폼에서 사용하지 못할 수 있습니다 .

[…]

%V– 월요일을 요일의 첫 번째 요일 로하는 10 진수 ISO 8601 주. 01주는 1 월 4 일이 포함 된 주입니다. 예 : 01 , 02,…, 53

from : datetime — 기본 날짜 및 시간 유형 — Python 3.7.3 문서

나는에서 그것에 대해 발견했습니다 여기에 . 그것은 파이썬 2.7.6에서 나를 위해 일했습니다.


답변

나는 date.isocalendar()대답이 될 것이라고 믿습니다 . 이 기사 는 ISO 8601 캘린더의 기본 원리를 설명합니다. Python 문서 의 datetime 페이지 에서 date.isocalendar () 부분을 확인하십시오 .

>>> dt = datetime.date(2010, 6, 16)
>>> wk = dt.isocalendar()[1]
24

.isocalendar ()는 (year, wk num, wk day)로 3 튜플을 반환합니다. dt.isocalendar()[0]연도, dt.isocalendar()[1]주 번호, dt.isocalendar()[2]요일을 반환합니다. 가능한 한 간단합니다.


답변

다른 옵션이 있습니다.

import time
from time import gmtime, strftime
d = time.strptime("16 Jun 2010", "%d %b %Y")
print(strftime("%U", d))

인쇄합니다 24.

참조 : http://docs.python.org/library/datetime.html#strftime-and-strptime-behavior


답변

다른 사람들이 제안한 ISO 주간은 좋은 것이지만 귀하의 요구에 맞지 않을 수도 있습니다. 매주 월요일로 시작한다고 가정하여 연말과 말에 흥미로운 예외가 발생합니다.

요일에 관계없이 1 주차가 항상 1 월 1 일부터 1 월 7 일까지 인 정의를 사용하려면 다음과 같이 파생을 사용하십시오.

>>> testdate=datetime.datetime(2010,6,16)
>>> print(((testdate - datetime.datetime(testdate.year,1,1)).days // 7) + 1)
24


답변

일반적으로 현재 주 번호를 얻으려면 (일요일부터 시작) :

from datetime import *
today = datetime.today()
print today.strftime("%U")


답변

연중 순간의 정수 값에 대해 다음을 시도하십시오.

import datetime
datetime.datetime.utcnow().isocalendar()[1]