문자열에서 datetime 객체로 변환
문자열에서 날짜를 추출하여 datetime 객체를 얻기 위해서는 datetime.strptime() 클래스 함수를 이용합니다.
import datetime as dt
date_string = '2020-12-10T04:26:45'
date = dt.datetime.strptime(date_string, '%Y-%m-%dT%H:%M:%S')
print(date)
# 실행 결과
# 2020-12-10 04:26:45
datetime.strptime() 클래스 함수에서 지정할 수 있는 더 자세한 날짜 형식은 아래 참고자료 ( "datetime — 기본 날짜와 시간 형" )를 확인해 보시면 됩니다.
datetime 연산 (날짜 및 시간 연산)
날짜 연산은 datetime.timedelta 클래스를 이용합니다.
입력받은 시각 정보에 9시간을 더하려면, 다음과 같이 합니다.
import datetime as dt
date_string = '2020-12-10T04:26:45'
date = dt.datetime.strptime(date_string, '%Y-%m-%dT%H:%M:%S')
print(date)
date += dt.timedelta(hours = 9)
print(date)
# 실행 결과
# 2020-12-10 04:26:45
# 2020-12-10 13:26:45
datetime의 timezone 설정하기
날짜와 시간 객체는 시간대역 정보를 포함하는지에 따라 《어웨어(aware)》와 《나이브(naive)》로 나뉩니다.
어웨어(aware) 객체는 시간대역(timezone) 정보를 포함하고 있고, 나이브(naive)는 포함하고 있지 않습니다.
import datetime as dt
kst_timezone = dt.timezone(dt.timedelta(hours=9), 'KST')
now_utc = dt.datetime.now(dt.timezone.utc)
now_kst = dt.datetime.now(kst_timezone)
now_none = dt.datetime.now()
print(now_utc)
print(now_utc.tzinfo)
print(now_kst)
print(now_kst.tzinfo)
print('to UTC = ', now_kst.astimezone(dt.timezone.utc))
print(now_none)
print(now_none.tzinfo)
print('to UTC = ', now_none.astimezone(dt.timezone.utc))
print('to KST = ', now_none.astimezone(kst_timezone))
실행 결과는 다음과 같습니다.
2020-12-22 07:39:24.468937+00:00
UTC
2020-12-22 16:39:24.468937+09:00
KST
to UTC = 2020-12-22 07:39:24.468937+00:00
2020-12-22 16:39:24.468937
None
to UTC = 2020-12-22 07:39:24.468937+00:00
to KST = 2020-12-22 16:39:24.468937+09:00
위 예에서는 "dt.datetime.now()"와 같이 timezone 정보 없이 호출하면 나이브(naive) 형식의 datetime 객체가 반환되고, "datetime.tzinfo == None"로 설정되어 있습니다.
나이브(naive) 형식의 datetime을 astimezone() 함수를 이용하면 timezone 정보를 포함하고 있는 어웨어(aware) datetime 객체로 변환할 수 있습니다. 위 예에서는 "now_none" 나이브 형식의 datetime 객체를 kst_timezone 및 utc 시간대역으로 변환하여 출력하는 예제를 보여줍니다.
출력된 시각의 형태를 유심히 보면, 나이브(naive) 형식의 datetime은 시간대역을 유추할 수 있는 UTC 오프셋 정보(±HHMM[SS[.ffffff]] 형태)가 제공되지 않고 "2020-12-22 16:39:24.468937"과 같이 날짜 및 시각 정보만 출력됩니다. 시간대역 정보가 포함된 어웨어(aware) datetime 객체들은 UTC 오프셋 정보가 포함되어 있습니다.
참고자료
- "datetime — 기본 날짜와 시간 형":https://docs.python.org/ko/3/library/datetime.html#strftime-and-strptime-format-codes
- "문자열을 Datetime으로 변경하는 방법":https://brownbears.tistory.com/432
'프로그래밍 > Python' 카테고리의 다른 글
[Python] os.mkdir() 폴더 생성시, "FileNotFoundError: [WinError 3] 지정된 경로를 찾을 수 없습니다" 오류 대처 (0) | 2021.04.09 |
---|---|
[python] len() 함수 vs count() 메소드 (0) | 2021.04.06 |
[Python] "Unicode-objects must be encoded before hashing" 오류 대처법 (0) | 2021.02.02 |
데이터 형 변환(type cast) : str, bool, int, float, chr (0) | 2020.12.11 |
list의 모든 문자열을 int 값으로 변경하기 (0) | 2020.12.10 |