簡體   English   中英

在Django中獲取系統時間w / timezone繞過默認時區

[英]Get system time w/timezone in Django bypassing default timezone

只要我使用普通的'Python shell', datetime.datetime.now()命令就可以正常工作以獲得系統的本地(非UTC)時間。

但是我正在開發一個Django項目,其中在settings.py使用TIME_ZONE = 'UTC'更改了時區。

我嘗試django.utils timezonetzlocal模塊的許多解決方案,但它們都tzlocal 所有這些都返回錯誤或UTC時間。

如果我將settings.py的時區更改為我的本地時區,則所有解決方案都有效。 但我不能這樣做,那么有沒有辦法繞過settings.py的默認時區選項? 或者任何方式settings.py的時區都可以自動更新? 如果我刪除TIME_ZONE行,我不知道為什么,但它似乎得到一個隨機的時區。

編輯 -

我知道的是,時區可以手動輸入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)

請參閱: https//docs.djangoproject.com/en/1.10/topics/i18n/timezones/#naive-and-aware-datetime-objects

Django似乎將其時區放在TZ環境變量中。 嘗試del os.environ['TZ']然后使用tzlocal。

您可以使用Javascript從瀏覽器獲取時區偏移到UTC。 這是代碼。

var d = new Date()
var n = d.getTimezoneOffset()
alert(n)

結果是分鍾數。 例如,你將在洛杉磯獲得480。 如果結果為負數,則時區應為“西”,相反,正數表示“東”。 AND 1時區= 60分鍾,所以,你可以算出480/60 = 8.然后結果是洛杉磯在西8時區。 然后你可以使用pytz來獲取當地時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM