Tiny Finger Point Hand With Heart
본문 바로가기
Python

[Python] 문자열을 날짜, 시간으로 변환하는 방법 (string to date, string to time) - strptime()

by yoondii 2023. 2. 3.
728x90
반응형

 

Python 에서 strptime() 을 사용하시면 문자열을 날짜, 시간으로 변경할 수 있다.

 

더 자세한 정보는 공식문서를 확인하자.

https://docs.python.org/ko/3/library/datetime.html?highlight=strptime# 

 

datetime — Basic date and time types

Source code: Lib/datetime.py The datetime module supplies classes for manipulating dates and times. While date and time arithmetic is supported, the focus of the implementation is on efficient attr...

docs.python.org

 

strptime()

from datetime import datetime
import time

datetime_string = "2021년 12월 31일 13시 35분 42.657813초"
datetime_format = "%Y년 %m월 %d일 %H시 %M분 %S.%f초"

datetime_result = datetime.strptime(datetime_string, datetime_format)
print(type(datetime_result)) # <class 'datetime.datetime'>
print(datetime_result) # 2021-12-31 13:35:42.657813

time_result = time.strptime(datetime_string, datetime_format)
print(type(time_result))  # <class 'time.struct_time'>
print(time_result)  # time.struct_time(tm_year=2021, tm_mon=12, tm_mday=31, tm_hour=13, tm_min=35, tm_sec=42, tm_wday=4, tm_yday=365, tm_isdst=-1)


datetime_string = "2021-12-31 13:35:42.657813"
datetime_format = "%Y-%m-%d %H:%M:%S.%f"

datetime_result = datetime.strptime(datetime_string, datetime_format)
print(type(datetime_result)) # <class 'datetime.datetime'>
print(datetime_result) # 2021-12-31 13:35:42.657813

time_result = time.strptime(datetime_string, datetime_format)
print(type(time_result))  # <class 'time.struct_time'>
print(time_result)  # time.struct_time(tm_year=2021, tm_mon=12, tm_mday=31, tm_hour=13, tm_min=35, tm_sec=42, tm_wday=4, tm_yday=365, tm_isdst=-1)


datetime_string = "12/31 2021"
datetime_format = "%m/%d %Y"

datetime_result = datetime.strptime(datetime_string, datetime_format)
print(type(datetime_result)) # <class 'datetime.datetime'>
print(datetime_result) # 2021-12-31 00:00:00

time_result = time.strptime(datetime_string, datetime_format)
print(type(time_result))  # <class 'time.struct_time'>
print(time_result)  # time.struct_time(tm_year=2021, tm_mon=12, tm_mday=31, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=365, tm_isdst=-1)

strptime() 을 사용하여 위와 같이 문자열 날짜 및 시간 타입 datetime 객체로 변환하여 사용할 수 있다.

datetime 모듈 뿐만 아니라 time 모듈에도 사용 가능하다.


strptime()에 사용되는 포맷 코드는 예시에 사용된 것 이외에도 아주 많은 것들이 있다.

strptime 포맷 코드 표

그룹 코드 의미
%Y 연도 (전체)
%y 연도 (뒤에 2자리만)
%m
%B Locale 월 표현 (전체)
%b Locale 월 표현 (축약형)
%d
%j 연중 일
%H 시 (24시간제)
%I 시 (12시간제)
%p Locale 오전, 오후
%M
%S
마이크로초 %f 마이크로초
요일 %w 요일 (0 : 일요일, 6일 : 토요일)
%A Locale 요일 (전체)
%a Locale 요일 (축약형)
%W 연중 몇 번째 주인지 표현 (월요일 시작 기준)
%U 연중 몇 번째 주인지 표현 (일요일 시작 기준)
날짜 표현 %c Locale 날짜와 시간 표현
%x Locale 날짜 표현
%X Locale 시간 표현
문자 표현 %% 리터럴 '%' 문자

위 표를 참고해서 원하는 포맷으로 날짜 및 시간 형식 원하는 형식의 문자열로 변경하여 사용하면된다.


from datetime import datetime

# 인풋을 아웃풋으로 변환하여 출력하라  인풋은 날짜,문자열 등 다양/ 아웃풋은 2023-02-01 00:00:00 이렇게 나와야함

# Q3
input = "김은정은 2023년 02월 01일 입력을 하였다."
ans = input.split()
#print(ans)  # ['김은정은', '2023년', '02월', '01일', '입력을', '하였다.']
#print(ans[1], ans[2], ans[3])  # 2023년 02월 01일
#print(ans[1] + ans[2] + ans[3])  # 2023년02월01일

result = ans[1] + ans[2] + ans[3]
#print(result, type(result))  # 2023년02월01일 <class 'str'>

date3_format = "%Y년%m월%d일"
date3 = datetime.strptime(result, date3_format)
print(date3)  # 2023-02-01 00:00:00

 

728x90
반응형

댓글