Получить текущий часовой пояс (Django) - PullRequest
0 голосов
/ 11 января 2020

В настоящее время в моих настройках установлено значение TIME_ZONE = 'UTC'.

В моем поле DebitCard модель expiration_date я сохраняю дату как unixtime. Например, 01/10/2020 @ 11: 25 вечера (UT C) составляет 1578698708.

Проблема:

Скажем, expiration_date это 15 января , 2010 в 00:00 или (1263513600).

Я хочу запретить пользователям совершать транзакции, когда текущее время больше, чем expiration_date .

Однако, если пользователь находится в Лос-Анджелесе (за 8 часов до UT C), current_time отключится на 8 часов.

Вопрос:

Как мне узнать текущее время пользователя, где бы он ни находился (не только в Лос-Анджелесе)? Потому что я хочу взять это время и сравнить его со своей дебетовой картой expiration_date

Ответы [ 2 ]

2 голосов
/ 11 января 2020

Попробуйте это.

from django.contrib.gis.utils import GeoIP
from .utils import GeoTimeZoneReader


  g = GeoIP()  # get user ip
  g.city(request.META['REMOTE_ADDR'])
  g.city('74.125.79.147') # get city 
to get timezone 

  data = GeoIP().city('74.125.79.147')

  # Get Time Zone
  db = GeoTimeZoneReader()
  db.get_timezone(data['country_code'], data['region'])
0 голосов
/ 11 января 2020

Если вы хотите быть уверены, что ваш код использует время UT C для сравнения, используйте datetime.datetime.utcnow()

Например, попробуйте выполнить следующую команду в python или в вашем управлении. py shell:

import datetime
print(datetime.datetime.utcnow())

Вы можете сравнить вывод этого с простым datetime.datetime.now(). Если используемый вами компьютер не в UT C, now () и utcnow () будут другими.

...