본문 바로가기

D.S/Python

210818수 - datetime 관련 정리

728x90

 

 

자주 쓰는 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으로 초기화


 

반응형