자주 쓰는 datetime 관련 코드 정리.
gitgist 주소:
https://gist.github.com/ymmu/fdf24bdd68b2dcdfd2199a04b3b94b51
datetime → str
*str p
time 임
from datetime import datetime
date_time_obj = datetime.strptime('2021-08-18 14:10:03+0900', '%Y-%m-%d %H:%M:%S%z')
print(date_time_obj) # 2021-08-18 14:10:03+09:00
str → datetime
*str f
time 임
from datetime import datetime
print(date_time_obj.strftime("%Y-%m-%dT%H:%M:%S%z"))
# 2021-08-18T14:10:03+0900
datetime → timestamp
from datetime import datetime
date_time_obj.timestamp()
# 1629263403.0
timestamp → datetime
from datetime import datetime
datetime.fromtimestamp(1629263403.0)
# datetime.datetime(2021, 8, 18, 14, 10, 3)
timezone 적용
from datetime import datetime
import pytz
KST = pytz.timezone('Asia/Seoul')
print(datetime.utcnow())
# datetime.datetime(2021, 8, 18, 2, 10, 39, 958735)
datetime.utcnow().replace(tzinfo=KST)
# datetime.datetime(2021, 8, 18, 2, 11, 48, 271174, tzinfo=)
datetime.utcnow().replace(tzinfo=KST).strftime("%Y-%m-%dT%H:%M:%S%z")
# '2021-08-18T02:13:29+0828'
from datetime import datetime
datetime(2018, 12, 31, 15, 0, tzinfo=timezone.utc)
datetime(2018, 12, 31, 15, 0, tzinfo=KST)
# datetime.datetime(2018, 12, 31, 15, 0, tzinfo=)
잘 쓰는 포맷코드
년(year)
%y: 세기가 없는 해(year)를 0으로 채워진 10진수로. (00, 01, …, 99) %Y: 세기가 있는 해(year)를 10진수로. (0001, 0002, …, 2013, 2014, …, 9998, 9999)
월(month)
%m : 월을 0으로 채워진 10진수로. (01, 02, …, 12)
일(day)
%d : 월중 일(day of the month)을 0으로 채워진 10진수로. (01, 02, …, 31)
시간(hour)
%M : 분을 0으로 채워진 십진수로. (00, 01, …, 59)
%p : 로케일의 오전이나 오후에 해당하는 것. (AM, PM (en_US); am, pm (de_DE))
분(minute)
%M : 분을 0으로 채워진 십진수로. (00, 01, …, 59)
초(second)
%S : 초를 0으로 채워진 10진수로. (00, 01, …, 59)
UTC
%z : ±HHMM[SS[.ffffff]] 형태의 UTC 오프셋 (객체가 나이브하면 빈 문자열). (비어 있음), +0000, -0400, +1030, +063415, -030712.345216
시간 빼기/더하기
datetime끼리 빼주기 / timedelta 이용
# datetime객체 - datetime객체
diff_t = date_time_obj - date_time_obj2
print(type(diff_t)) #
diff_t.seconds
diff_t.days
diff_t.total_seconds()
from datetime import timedelta
'''
#timedelta 객체 생성 params 확인
timedelta(
days=0,
seconds=0,
microseconds=0,
milliseconds=0,
minutes=0,
hours=0,
weeks=0)
'''
date_time_obj + timedelta(hours=2)
# datetime.datetime(2021, 8, 18, 16, 10, 3, tzinfo=datetime.timezone(datetime.timedelta(0, 32400)))
date → datetime (시간 정각으로)
참조: https://hashcode.co.kr/questions/473/date를-datetime으로-변환하려면
from datetime import date
from datetime import datetime
d = date.today()
datetime.combine(d, datetime.min.time())
# 시간은 00:00:00으로 초기화