获取当前时区(Django)

问题描述 投票:0回答:2

我目前在设置中设置了TIME_ZONE = 'UTC'

在我的DebitCard模型expiration_date字段中,我将日期存储为unixtime。例如,01/10/2020 @ 11:25pm(UTC)是1578698708

问题是:

假设expiration_date2010年1月15日,00:00或(1263513600)。

我想在当前时间大于到期日期时阻止用户进行交易。

但是,如果用户在洛杉矶(UTC之前8个小时),current_time将关闭8个小时。

问题:

无论用户身在何处(不仅在洛杉矶,我该如何获取用户的当前时间?因为我想抓住这次,并将其与他们的借记卡expiration_date

python django time timezone pytz
2个回答
0
投票

如果要确保代码使用UTC时间进行比较,请使用datetime.datetime.utcnow()

例如,尝试在python或您的manage.py shell中运行以下命令:

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

您可以将其输出与简单的datetime.datetime.now()比较。如果您使用的计算机不在UTC中,则now()和utcnow()会有所不同。


0
投票

尝试一下。

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'])
© www.soinside.com 2019 - 2024. All rights reserved.