Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 绕过默认时区获取Django中带时区的系统时间_Python_Django_Date_Datetime - Fatal编程技术网

Python 绕过默认时区获取Django中带时区的系统时间

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

只要我使用纯Python shell,
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需要服务器的本地时间(区域)。