728x90
datetime 모듈
datatime 모듈은 날짜와 시간을 조작하는 클래스를 제공합니다.
날짜와 시간을 함께 저장하는 datetime 클래스, 날짜만 저장하는 date 클래스, 시간만 저장하는 time 클래스, 시간 구간 정보를 저장하는 timedelta 클래스 등을 제공합니다.
시간 객체 생성
date 객체와 time 객체를 합칠 때는 combine을 사용합니다.
import datetime
now = datetime.datetime.now()
print(type(now), now)
timestamp = now.timestamp()
print(type(timestamp), timestamp)
dt_obj = datetime.datetime.fromtimestamp(timestamp)
print(type(dt_obj), dt_obj)
date_obj = now.date()
print(type(date_obj), date_obj)
time_obj = now.time()
print(type(time_obj), time_obj)
dt_obj = datetime.datetime.combine(date_obj, time_obj)
print(type(dt_obj), dt_obj)
더보기
<class 'datetime.datetime'> 2020-06-18 16:44:43.684079
<class 'float'> 1592466283.684079
<class 'datetime.datetime'> 2020-06-18 16:44:43.684079
<class 'datetime.date'> 2020-06-18
<class 'datetime.time'> 16:44:43.684079
<class 'datetime.datetime'> 2020-06-18 16:44:43.684079
타입 변환
객체에서 문자열로 strftime, 문자열에서 객체로는 strptime 를 사용합니다.
문자열에서 객체 변환 시, 문자열의 포맷을 맞추어야 합니다.
now_str = str(now)
print(type(now_str), now_str)
df = '%Y-%m-%d %H:%M:%S'
dt_str = now.strftime(df)
print(type(dt_str), dt_str)
df2 = '%y%m%d %p %I:%M:%S'
dt_str2 = now.strftime(df2)
print(type(dt_str2), dt_str2)
dt_obj = datetime.datetime.strptime(dt_str, df)
print(type(dt_obj), dt_obj)
dt_obj2 = datetime.datetime.strptime(dt_str2, df2)
print(type(dt_obj2), dt_obj2)
더보기
<class 'str'> 2020-06-18 17:06:07.614215
<class 'str'> 2020-06-18 17:06:07
<class 'str'> 200618 PM 05:06:07
<class 'datetime.datetime'> 2020-06-18 17:06:07
<class 'datetime.datetime'> 2020-06-18 17:06:07
문자열에서 객체 변환 시, 문자열의 포맷이 다를 경우 다음과 같은 에러 발생.
df = '%Y-%m-%d %H:%M:%S'
df2 = '%y%m%d %p %I:%M:%S'
dt_str = now.strftime(df2)
dt_obj = datetime.datetime.strptime(dt_str, df)
print(type(dt_obj), dt_obj)
더보기
ValueError: time data '200618 PM 05:15:14' does not match format '%Y-%m-%d %H:%M:%S'
시간 연산
timedelta 클래스는 시간 차이를 나타내며 연산 후, 사용할 수 있는 속성으로는 days, seconds, microseconds 가 있습니다.
dt_obj = now
td_obj = datetime.timedelta(days=1)
print(type(td_obj), td_obj)
yesterday_dt = dt_obj - td_obj
print(type(yesterday_dt), yesterday_dt)
tomorrow_dt = dt_obj + td_obj
print(type(tomorrow_dt), tomorrow_dt)
td_obj = dt_obj - yesterday_dt
print(type(dt_obj), dt_obj , type(yesterday_dt), yesterday_dt)
print(type(td_obj), td_obj)
print(type(td_obj.days), td_obj.days)
print(type(td_obj.seconds), td_obj.seconds)
print(type(td_obj.microseconds), td_obj.microseconds)
더보기
<class 'datetime.timedelta'> 1 day, 0:00:00
<class 'datetime.datetime'> 2020-06-17 17:36:02.560973
<class 'datetime.datetime'> 2020-06-19 17:36:02.560973
<class 'datetime.datetime'> 2020-06-18 17:36:02.560973 <class 'datetime.datetime'> 2020-06-17 17:36:02.560973
<class 'datetime.timedelta'> 1 day, 0:00:00
<class 'int'> 1
<class 'int'> 0
<class 'int'> 0
replace()
microsecond 를 제외하고 싶을 경우, replace 를 사용합니다.
now = datetime.datetime.now()
print(now)
now2 = now.replace(microsecond=0)
print(now2)
더보기
2020-06-18 17:41:57.763686
2020-06-18 17:41:57
'Language > Python' 카테고리의 다른 글
파이썬 랜덤 모듈 사용하기 (0) | 2020.06.18 |
---|---|
파이썬 자료형 타입 확인하기 (0) | 2020.06.18 |
파이썬 멀티라인에 대한 코드 연결 및 변수 할당 알아보기 (0) | 2020.06.17 |
파이썬 동적 코드 실행을 위한 내장 함수 알아보기 (0) | 2020.06.17 |
파이썬 변수 네이밍 규칙 알아보기 Naming Conventions (0) | 2020.06.17 |