programing

주 번호에서 날짜 가져오기

muds 2023. 10. 3. 11:39
반응형

주 번호에서 날짜 가져오기

제 코드에 무슨 문제가 있는 것인지 알려주세요.

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.isocalendarISO8601 준수 주수 파악:

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

반응형