Python 绕过默认时区获取Django中带时区的系统时间
只要我使用纯Python shell,Python 绕过默认时区获取Django中带时区的系统时间,python,django,date,datetime,Python,Django,Date,Datetime,只要我使用纯Python shell,datetime.datetime.now()命令就可以很好地获取系统的本地(非UTC)时间 但是我正在做一个Django项目,其中时区在settings.py中用time\u zone='UTC'进行更改 我尝试了从django.utils timezone到tzlocal模块的许多解决方案,但都不起作用。它们都返回错误或UTC时间 如果我将settings.py中的时区更改为我的本地时区,所有解决方案都会起作用。但是我不能这样做,那么有没有办法绕过set
datetime.datetime.now()
命令就可以很好地获取系统的本地(非UTC)时间
但是我正在做一个Django项目,其中时区在settings.py
中用time\u zone='UTC'
进行更改
我尝试了从django.utils timezone
到tzlocal
模块的许多解决方案,但都不起作用。它们都返回错误或UTC时间
如果我将settings.py
中的时区更改为我的本地时区,所有解决方案都会起作用。但是我不能这样做,那么有没有办法绕过settings.py
中的默认时区选项?或者以任何方式自动更新settings.py
的时区?如果我删除时区
行,我不知道为什么,但它似乎得到了一个随机时区
编辑-
我知道可以用pytz
手动输入时区,但我不想这样做。我想得到本地系统的时区,但没有Django的时区调节
谢谢。要获取不同时区的时间,请使用以下代码:
# create another timezone instance
import pytz
new_york_tz = pytz.timezone("America/New_York")
# get the current date and time, with the timezone set in your settings.py
from django.utils import timezone
d = timezone.now()
print(d)
# get the date and time in your other timezone
d2 = new_york_tz.normalize(d)
print(d2)
请参阅:您可以使用Javascript获取从浏览器到UTC的时区偏移量。这是代码
var d = new Date()
var n = d.getTimezoneOffset()
alert(n)
结果是分钟数。例如,在洛杉矶你将得到480英镑。如果结果为负数,则时区应为“西”,反之,正数表示“东”。1时区=60分钟,你可以算出480/60=8。结果是洛杉矶位于西8时区。然后您可以使用pytz获取本地时间。Django似乎将其时区放在了TZ环境变量中。尝试
delos.environ['TZ']
然后使用tzlocal。我知道这可以做到,但我不想手动输入时区。应用程序应该能够从计算机上获取默认时区,以某种方式绕过Django的时区设置。“没有Django对时区的调节。”datetime.datetime.now(dateutil.tz.tzlocal())对您有效吗?不dateutil.tz.tzlocal()
只返回tzlocal()
否,因为Django的干预会覆盖它。但这取决于客户端。据我所知,OP需要服务器的本地时间(区域)。