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 가능
프론트(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 가능