일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 디버그모드
- 서버
- IMAGE
- 가상환경
- 고급C
- php
- 라즈베리파이
- Android
- 머신러닝
- 정리
- keras
- sw
- Linux
- 영상분석
- 안드로이드
- 데이터
- Deep Learning
- Python
- C언어
- Raspberry
- tensorflow
- Object Detection
- Machine Learning
- FLASK
- RapidCheck
- detection
- MySQL
- 지능형
- tracking
- Video
- Today
- Total
건프의 소소한 개발이야기
[Python] 날짜객체 정리하기 - datetime, time 본문
안녕하세요, 건프입니다.
데이터를 모으는 크롤링 작업을 할 때, 주식데이터와 같은 시계열 데이터를 다룰 때, 날짜객체들을 계속 다뤄야 하는데
기억력이 부족한 저는 사용할 때 마다 검색하는게 한심해서 아에 정리를 하고 넘어가려고 합니다.
누군가에게 도움이 될 정리가 되기를 바랍니다.
1. 일단 저는 time 객체와 datetime 객체만 사용합니다.
import time
from datetime import datetime, timedelta
timestamp_now = time.time() # timestamp 형식으로 현재 시간 알아오기
print(timestamp_now)
datetime_now = datetime.now() # datetime 형식으로 현재 시간 알아오기
print(datetime_now)
우선 time 객체는 timestamp 형식으로 출력을 하고
datetime 객체는 timestamp 의 값을 우리가 보기 편한 yyyy-mm-dd 의 형식으로 바꿔보는 역할을 수행하게 됩니다.
결과 :
>> python test.py
1501219142.348125 # timestamp 형식
2017-07-28 14:19:02.348170 # datetime 형식
2. datetime 객체 속의 timedelta 객체를 이용하면, 날짜를 거슬러 올라가거나, 미래값을 찾아가기 편리하다.
import time
from datetime import datetime, timedelta
timestamp_now = time.time() # timestamp 형식으로 현재 시간 알아오기
print(timestamp_now)
datetime_now = datetime.now() # datetime 형식으로 현재 시간 알아오기
print(datetime_now)
delta_datetime = timedelta(days=-365) # timedelta 는 datetime 형식으로 결과를 내뱉는다
print(datetime_now + delta_datetime) # -3 자체가 포함된 것이므로, 둘을 더해야 뺀 결과가 나온다
결과 :
>> python test.py
1501219272.672687
2017-07-28 14:21:12.672729
2016-07-28 14:21:12.672729 # 1년전 으로 시간을 돌린 timedelta 객체를 더했으므로, 1년 전 datetime 값을 얻을 수 있다.
3. datetime 객체 를 timestamp 형식으로 바꾸기
datetime -> timestamp
import time
from datetime import datetime, timedelta
timestamp_now = time.time() # timestamp 형식으로 현재 시간 알아오기
print(timestamp_now)
datetime_now = datetime.now() # datetime 형식으로 현재 시간 알아오기
print(datetime_now)
delta_datetime = timedelta(days=-365) # timedelta 는 datetime 형식으로 결과를 내뱉는다
print(datetime_now + delta_datetime) # -3 자체가 포함된 것이므로, 둘을 더해야 뺀 결과가 나온다
end_datetime = datetime_now + delta_datetime
end_timestamp = time.mktime(end_datetime.timetuple()) # datetime 형식 -> timestamp 형식
time.mktime(datetime.timetuple()) 형식으로 사용합니다.
4. timestamp 형식을 datetime 으로 바꾸기
timestamp -> datetime
import time
from datetime import datetime, timedelta
timestamp_now = time.time() # timestamp 형식으로 현재 시간 알아오기
print(timestamp_now)
datetime_now = datetime.now() # datetime 형식으로 현재 시간 알아오기
print(datetime_now)
delta_datetime = timedelta(days=-365) # timedelta 는 datetime 형식으로 결과를 내뱉는다
print(datetime_now + delta_datetime) # -3 자체가 포함된 것이므로, 둘을 더해야 뺀 결과가 나온다
end_datetime = datetime_now + delta_datetime
end_timestamp = time.mktime(end_datetime.timetuple()) # datetime 형식 -> timestamp 형식
print(timestamp_now)
print(datetime.fromtimestamp(timestamp_now)) # timestamp 형식 -> datetime 형식
print(end_timestamp)
print(datetime.fromtimestamp(end_timestamp))
datetime.fromtimestamp() 함수를 이용합니다.
시계열 데이터를 다룸에 있어서 사람에게 친숙한 형태는 datetime 형태인데
서로 다른 언어, 서로 다른 시간대에 있는 데이터를 다룸에 있어서는 통일된 timestamp 방식이 효율적일 경우가 많습니다.
어떤 것을 사용하느냐는 프로그램이 동작하는 환경과 상황과 프로그래머의 판단에 따라 다르겠지만,
서로간에 변환을 자유자재로만 할 수 있으면 큰 문제가 있지는 않습니다.
실전에서 겪었던 문제들을 정리해둡니다.
누군가에게 도움이 되었길 바랍니다.
감사합니다.
' 개발 이야기 > Python 이야기' 카테고리의 다른 글
[Python - Anaconda] 실전 사용법 완벽정리 (1) | 2017.08.01 |
---|---|
Dropbox 파일 업로드 스크립트 만들기 (0) | 2017.07.11 |
[Python - 가상환경] Virtualenv 가상환경 자동 실행 (autoenv) (1) | 2016.08.10 |
[Python] Beautifulsoup 으로 웹크롤링 하기 (0) | 2016.07.28 |