Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Oracle
- BOJ
- database
- 오라클
- 파이썬
- Git
- 스프링
- spring
- 이클립스
- 플라스크
- rdbms
- mybatis
- 자바스크립트
- 링크
- 데이터베이스
- 백준
- eclipse
- db
- TIL
- javascript
- mysql
- 웹프로그래밍
- sql
- 에러
- flask
- jQuery
- 알고리즘
- PYTHON
- java
- 자바
Archives
- Today
- Total
기록과 정리의 공간
[Python] 시간 다루기 헷갈리는 부분 정리 본문
0. UTC시간이란?
- 참고 : 링크
- UTC시간의 기준이 되는 나라는 영국의 런던으로, 런던을 기준으로 +, -로 나타낸다.
- 우리나라는 런던을 기준으로 +9이다.
- UTC와 GMT는 소수점 차이만 있을 뿐 큰 차이가 없어 혼용해서 사용하기도 한다.
1. 타임스탬프란?
- 참고 : 링크
- 운영제체 별로 날짜/시간을 표현하는 방식이 다르다.
- 윈도우 : 1601-01-01 00:00:00 부터 현재 시간까지 몇 100ns 떨어져 있는지를 8바이트로 나타낸다.
- 유닉스와 리눅스 : 1970-01-01 00:00:00부터 현재 시간까지의 초를 누적한 시간을 사용한다.
- 이렇게 표현되는 시간을 타임스탬프라고 한다.
2. time.time()
참고 : time모듈 관련 링크
time모듈의 time은 UTC를 사용하여 현재 시각을 실수 형태로 반환하는 함수인데, 1970년 1월 1일 0시 0분 0초를 기준으로 초 단위로 지난 시간을 알려준다.
from time import time
now_timestamp = time.time()
print(now_timestamp) # 1596094416.9727871
3. datetime.fromtimestamp() / datetime.utcfromtimestamp()
참고 : 링크
datetime모듈의 datetime객체의 fromtimestamp()함수에 인자로 time.time()을 넘겨주면 현재 시간을 datetime객체로 변환해준다.
utcfromtimestamp()함수에 time.time()을 넘겨주면 utc시간 객체로 반환해준다.
from datetime import datetime
print(datetime.fromtimestamp(now_timestamp)) # 2020-07-30 16:33:36.972787
print(datetime.utcfromtimestamp(now_timestamp)) # 2020-07-30 07:33:36.972787
위 코드에서 볼 수 있듯이 9시간 차이가 나는 것을 확인할 수 있다.
시간 차이 = datetime형 현재 시간 - datetime형 UTC시간
4. 웹 프로그래밍 시 게시물 작성 시간 구하는 것에 활용하기
참고 : 링크
게시물 작성 시간을 DB넣을 때는 이후에 상황에 맞게 가공하기 쉬운 형태로 넣는 것이 좋다.
따라서, timestamp()를 이용해 타임스탬프형식으로 넣는 것이 좋다.
#1 : datetime.utcnow()는 현재의 utc시간을 반환한다. datetime.utcnow().timestamp()는 초를 반환하므로 이를 밀리초단위로 변환해주기 위해 1000을 곱하고 소숫점을 없애기 위해 round()를 사용했다.
#2 : DB에는 이와 같은 형태로 작성 시간이 저장됨
#3 : strftime()(참고 링크)을 이용해 시간 정보 객체를 원하는 양식으로 양식화 한다.
# DB에 넣을 때 : # 2와 같은 형태로 작성시간을 넣어줌
from datetime import datetime
import time
current_utc_time = round(datetime.utcnow().timestamp() * 1000) # 1
print(current_utc_time) # 2 1596072314247
# 참고 : print(datetime.utcnow()) 값은 2020-07-30 10:25:14.246619 (한국 시간으로는 2020-07-30 19:25:14.246619)
# 1596072314247(글 작성시간)을 가공하기
from datetime import datetime
import time
value = 1596072314247
now_timestamp = time.time()
offset = datetime.fromtimestamp(now_timestamp) - datetime.utcfromtimestamp(now_timestamp)
value = datetime.fromtimestamp(int(value / 1000)) + offset # 1000을 나누는 이유는 밀리초를 다시 초로 변환하기 위함
print(value.strftime('%Y-%m-%d %H:%M:%S')) # 3 2020-07-30 19:25:14
'언어 > Python' 카테고리의 다른 글
[Python] 데코레이터(decorator) (0) | 2020.09.04 |
---|---|
[Python] 클로저(Closure Function) (0) | 2020.09.03 |
[Python] datetime.timedelta 객체 (0) | 2020.08.07 |
[Python] pyinstaller를 통해 변환된 .exe파일 실행 오류 해결 (0) | 2020.06.29 |
[Python] pyinstaller 설치 에러 해결 (3) | 2020.06.28 |
Comments