본문 바로가기
PYTHON/python 기초

[python] datetime, timestamp 차이 및 완벽 정리

by 자유데이터 2022. 3. 8.
반응형

데이터 분석가의 길, 자유데이터입니다.

 

 

파이썬 datetime, timestamp 내용 정리하기

 

파이썬에는 날짜 관련된 다양한 타입이 존재한다.
정말 사용할 때마다 헷갈리는데 이번에 확실하게 익혀보자.

  1. python 날짜 관련 타입들
  2. datetime에 대해서
  3. timestamp에 대해서
  4. 타입 맞추기

 

1. python 날짜 관련 타입들

파이썬에서 날짜 타입은 크게 3가지로 생각하면 된다.
{date} {datetime} {Timestamp}

# 1.datetime
import datetime

datetime.date(2022,1,1)
datetime.datetime(2022,1,1,21,19,24)

# 2.pandas
import pandas as pd

pd.Timestamp('2022-01-01T21:19:34')

{date} {datetime}은 datetime 모듈에서 만들어지고
{Timestamp}는 pandas 모듈에서 만들어진다

 

2. datetime에 대해서

datetime 모듈에서는 datedatetime을 만들 수 있는데
이름 처럼 시간대가 있냐 없냐의 차이다

input parameter를 잘 확인해본다
int 값을 넣어줘야 한다

datetime.date(year, month, day)
datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)

import datetime

datetime.date(2022,1,1)
datetime.datetime(2022,1,1,21,19,24)

datetime.date(2022, 1, 1) -> {date} 타입
datetime.datetime(2022, 1, 1, 21, 19, 24) -> {datetime} 타입

 

3. timestamp에 대해서

Timestamp는 pandas 모듈에서 생성
str 값을 넣어줘야 한다

import pandas as pd

pd.Timestamp('2022-01-01T21:19:34')

Timestamp('2022-01-01 21:19:34') -> {Timestamp} 타입

 

pd.Timestamp('2022-01-01T21:19:34') == datetime.datetime(2022,1,1,21,19,24)

False

datetime.date(2022,1,1) == datetime.datetime(2022,1,1)

False

타입이 다르면 같은 시간이라도 다르게 인식한다
반드시 타입을 맞춰준다

 

4. 타입 맞추기

1) str로 바꾸기

{date} {datetime} {Timestamp} 타입 모두
isoformat() / strftime() 둘 중 함수 아무거나 사용하면 된다

# 1.isoformat()
datetime.date(2022,1,1).isoformat()
datetime.datetime(2022,1,1,21,19,24).isoformat()
pd.Timestamp('2022-01-01T21:19:34').isoformat()

# 2.strftime() / 반드시 형식을 써줘야 함
datetime.date(2022,1,1).strftime('%Y-%m-%d')
datetime.datetime(2022,1,1,21,19,24).strftime('%Y-%m-%d')
pd.Timestamp('2022-01-01T21:19:34').strftime('%Y-%m-%d')

# 1.isoformat()
'2022-01-01'    
'2022-01-01T21:19:24'   
'2022-01-01T21:19:34'

# 2.strftime()
'2022-01-01'
'2022-01-01'
'2022-01-01'

 

2) Timestamp로 바꾸기

{date} {datetime} {Timestamp} 타입 모두
pd.to_datetime() 함수를 사용하면 된다

d1 = datetime.date(2022,1,1)
d2 = datetime.datetime(2022,1,1,21,19,24)
d3 = pd.Timestamp('2022-01-01T21:19:34')

pd.to_datetime(d1)
pd.to_datetime(d2)
pd.to_datetime(d3)

Timestamp('2022-01-01 00:00:00')
Timestamp('2022-01-01 21:19:24')
Timestamp('2022-01-01 21:19:24')

 

3) datetime으로 바꾸기

{date} {datetime} {Timestamp} 타입 모두
datetime.datetime.strptime() 함수를 사용하면 된다 (import datetime으로 한 경우)
datetime.strptime() 함수를 사용하면 된다 (from datetime import datetime으로 한 경우)

d1 = datetime.date(2022,1,1)
d2 = datetime.datetime(2022,1,1,21,19,24)
d3 = pd.Timestamp('2022-01-01T21:19:34')

datetime.datetime.strptime(d1.isoformat(), '%Y-%m-%d')
datetime.datetime.strptime(d3.isoformat(), '%Y-%m-%dT%H:%M:%S')

datetime.datetime(2022, 1, 1, 0, 0)
datetime.datetime(2022, 1, 1, 21, 19, 34)

반드시 입력값 형태와 같은 format을 입력해야 하고 str타입으로 넣어줘야 함

 

4) date으로 바꾸기

{date} {datetime} {Timestamp} 타입 모두
datetime에서 date 함수를 붙이면 된다

d1 = datetime.date(2022,1,1)
d2 = datetime.datetime(2022,1,1,21,19,24)
d3 = pd.Timestamp('2022-01-01T21:19:34')

datetime.datetime.strptime(d1.isoformat(), '%Y-%m-%d').date()
d2.date()
datetime.datetime.strptime(d3.isoformat(), '%Y-%m-%dT%H:%M:%S').date()

datetime.date(2022, 1, 1)
datetime.date(2022, 1, 1)
datetime.date(2022, 1, 1)

반응형

댓글