string 형태의 날짜를 datetime 데이터로 바꾸거나 vice-versa로 작업하는 경우를 위해 정리하고자 한다.
(1) string → datetime
string 데이터를 날짜 형식으로 바꾸기 위해서는 datetime
모듈의 strptime
을 사용하면 편하다. 이때 중요한 것은 parsing하는 데이터 포맷을 알맞게 입력해줘야 한다(!)
import datetime
## 올바른 포맷
string_data = '21/06/06'
datetime.datetime.strptime(string_data, '%y/%d/%m')
>>>> datetime.datetime(2021, 6, 6, 0, 0)
## 잘못된 포맷
string_data = '20210606'
datetime.datetime.strptime(string_data, '%y/%d/%m')
>>>> ValueErrorTraceback (most recent call last)
....
ValueError: time data '20210606' does not match format '%y/%d/%m'
format을 맞춰주면 다음과 같이 string 데이터를 변환할 수 있다.
string_data = '20210606'
date_data = datetime.datetime.strptime(string_data, '%Y%d%m')
## datetime 데이터로의 변환
date_data
>>>> datetime.datetime(2021, 6, 6, 0, 0)
print(date_data)
>>>> 2021-06-06 00:00:00
## 날짜만 사용 시
print(date_data.date())
>>>> 2021-06-06
뭐가 좋냐? 날짜의 순서 비교나, 날짜 차이 수 등을 계산할 수 있다.
import datetime
date_of_birth = '1993.08.25'
today = '20200606'
date_of_birth = datetime.datetime.strptime(date_of_birth, '%Y.%m.%d')
today = datetime.datetime.strptime(today, '%Y%m%d')
## 크기비교
date_of_birth < today
>>>> True
## 일 수 계산
today - date_of_birth
>>>> datetime.timedelta(9782)
howmanydays = today - date_of_birth
howmanydays.days
>>>> 9782
(2) datetime → string
datetime 데이터를 string으로 바꾸는 방법은 두 가지가 있다. str()
를 사용하면 print() 결과물이 출력된다. 특정한 형태의 데이터로 바꾸고자 한다면 strftime
을 사용하면 된다. 참고로 datetime.datetime.now()
로 현재 날짜, 시간을 얻을 수 있다.
import datetime
today = datetime.datetime.now()
print(today)
>>>> '2021-06-06 00:23:55.736843'
## 방법 1
str(today)
>>>> '2021-06-06 00:24:28.669012'
## 방법 2
datetime.datetime.strftime(today, '%Y-%m-%d')
>>>> '2021-06-06'
datetime.datetime.strftime(today, '%D')
>>>> '06/06/21'
728x90
'python 메모' 카테고리의 다른 글
[python] requests 라이브러리 한글 인코딩 (0) | 2021.07.27 |
---|---|
[pandas] apply + custom function을 사용한 다중 입력 및 출력 (0) | 2021.06.10 |
[python] First-Class Function과 Closure, Decorator (0) | 2021.06.01 |
[matplotlib] subplot 그리기 (0) | 2021.05.19 |
[python] regex 메모 (0) | 2021.05.07 |