javascript Date를 python datetime으로 변환

1. 왜 하게 되었는가

프론트(vue.js)에서 firebase realtime database에 단순 Date()로 시간을 저장했는데 이 값을 백(django)에서 불러와서 비교해야 함. => 형식을 맞출 필요


2. 어떻게 하였는가

1) 구글 검색하여 형식을 맞춤.

now = datetime.now()
python_date = datetime.strptime(js_date, "%a %b %d %Y %H:%M:%S %Z%z (한국 표준시)")

2) timezone naive와 timezone aware 문제
now와 python_date를 비교하려니 timezone문제가 발생.
-첫 번째 방법 : 기본 내장된 pytz를 사용하고 parsing을 now를 이용하여 해결.

import pytz
now = datetime.now(pytz.UTC)
python_date = now.strptime(js_date, "%a %b %d %Y %H:%M:%S %Z%z (한국 표준시)")


- 두 번째 방법 : django.utils.timezone을 사용
python_date = datetime.strptime(js_date, "%a %b %d %Y %H:%M:%S %Z%z (한국 표준시)").replace(tzinfo=timezone.utc)

3. 참조

- https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior
- https://stackoverflow.com/questions/8153631/js-date-object-to-python-datetime


4. 좋은 글

- https://8percent.github.io/2017-05-31/django-timezone-problem/


5. 여담

ISO format으로 저장을 추천. javascript라면 new Date().toISOString(), python은 datetime.now().isoformat()
ISO format이면 python의 dateutil.parser로 바로 parsing 가능

이 블로그의 인기 게시물

Postgresql에서 5432 port가 열려있냐는 문제(Ubuntu 기준)

vue에서 v-html에 포함된 class의 css가 적용되지 않는 경우

Linux screen 명령어 정리