주 번호에서 날짜 가져오기
제 코드에 무슨 문제가 있는 것인지 알려주세요.
import datetime
d = "2013-W26"
r = datetime.datetime.strptime(d, "%Y-W%W")
print(r)
"2013-01-01 00:00:00", 감사합니다.
날짜를 생성하기에는 주 수가 부족하고 요일도 필요합니다.기본값 추가:
import datetime
d = "2013-W26"
r = datetime.datetime.strptime(d + '-1', "%Y-W%W-%w")
print(r)
그-1
그리고.-%w
패턴은 파서에게 그 주에 월요일을 고르라고 말합니다.출력은 다음과 같이 출력합니다.
2013-07-01 00:00:00
%W
월요일을 일주일의 첫번째 날로 사용합니다.평일은 본인이 선택할 수 있지만, 이를 벗어나면 예상치 못한 결과가 나올 수도 있습니다.
설명서의 각주 4의 및 동작 섹션을 참조하십시오.
와 함께 사용할 경우
strptime()
방법,%U
그리고.%W
요일과 연도가 지정된 경우에만 계산에 사용됩니다.
주 번호가 ISO 주 날짜인 경우 다음을 사용합니다.%G-W%V-%u
대신에!이러한 지시사항에는 Python 3.6 이상이 필요합니다.
파이썬 3.8에는 편리함이 있습니다.datetime.date.fromisocalendar
:
>>> from datetime import date
>>> date.fromisocalendar(2020, 1, 1) # (year, week, day of week)
datetime.date(2019, 12, 30, 0, 0)
이전 Python 버전(3.7-)에서는 다음의 정보를 사용할 수 있습니다.datetime.date.isocalendar
ISO8601 준수 주수 파악:
from datetime import date, timedelta
def monday_of_calenderweek(year, week):
first = date(year, 1, 1)
base = 1 if first.isocalendar()[1] == 1 else 8
return first + timedelta(days=base - first.isocalendar()[2] + 7 * (week - 1))
둘 다 함께 작동합니다.datetime.datetime
.
다른 답변을 완료하려면 - ISO 주 번호를 사용하는 경우 이 문자열이 적합합니다(지정된 ISO 주 번호의 월요일을 얻기 위해).
import datetime
d = '2013-W26'
r = datetime.datetime.strptime(d + '-1', '%G-W%V-%u')
print(r)
%G
,%V
,%u
의 ISO 등가물입니까?%Y
,%W
,%w
, 다음과 같은 결과가 나옵니다.
2013-06-24 00:00:00
Python 3.6+에서 사용 가능. 문서에서 사용 가능.
import datetime
res = datetime.datetime.strptime("2018 W30 w1", "%Y %W w%w")
print res
요일로 1을 더하면 정확한 현재 주 시작이 됩니다.시간 delta(days=6)를 추가하면 주말이 됩니다.
datetime.datetime(2018, 7, 23)
주 번호에서 모든 근무일(Mo-Fr) 날짜를 반환하는 간단한 기능을 찾고 있는 사람이 있다면 이를 고려하십시오(수용된 답변 기준).
import datetime
def weeknum_to_dates(weeknum):
return [datetime.datetime.strptime("2021-W"+ str(weeknum) + str(x), "%Y-W%W-%w").strftime('%d.%m.%Y') for x in range(-5,0)]
weeknum_to_dates(37)
출력:
['17.09.2021', '16.09.2021', '15.09.2021', '14.09.2021', '13.09.2021']
연간 주수가 있는 경우, 일년의 첫 날에 주수를 더하면 됩니다.
>>> import datetime
>>> from dateutil.relativedelta import relativedelta
>>> week = 40
>>> year = 2019
>>> date = datetime.date(year,1,1)+relativedelta(weeks=+week)
>>> date
datetime.date(2019, 10, 8)
다른 솔루션은 시리즈 데이터를 수용하는 것과 대조적으로 효과가 있었습니다.strptime
단일 문자열 값만 허용:
#fw_to_date
import datetime
import pandas as pd
# fw is input in format 'YYYY-WW'
# Add weekday number to string 1 = Monday
fw = fw + '-1'
# dt is output column
# Use %G-%V-%w if input is in ISO format
dt = pd.to_datetime(fw, format='%Y-%W-%w', errors='coerce')
여기 제로위크 문제를 포함한 편리한 기능이 있습니다.
언급URL : https://stackoverflow.com/questions/17087314/get-date-from-week-number
'programing' 카테고리의 다른 글
ClosedXML - 여러 피벗 테이블 작성 (0) | 2023.10.03 |
---|---|
주문 업데이트를 위한 우커머스 후크 (0) | 2023.10.03 |
함수 포인터를 반환하는 함수에 대한 C 구문 (0) | 2023.10.03 |
팬더 - 값 없음 필터링 (0) | 2023.10.03 |
PL/SQL에서 돌아오는 커서를 닫는 방법은? (0) | 2023.10.03 |