2015-12-02 60 views
0

使用Python/Django 1.5.4,我試圖找到一種在英國倫敦獲得當前時間的方法。如何獲得夏令時格林尼治標準時間

這樣做似乎令人驚訝地很複雜。

顯然存在time.time(),datetime.now(),datetime.utcnow(),但這些方法會返回服務器時間。

這是一個問題,因爲服務器可能不在英國,上述方法不考慮夏令時。

有沒有一個簡單,直接的方式做到這一點,沒有過多的進口和第三方應用程序?

+0

你絕對不應該使用Django 1.5。它在相當長一段時間內一直不受支持,可能會面臨很多安全問題。至少升級到1.8。 –

+1

GMT沒有DST。你是說GMT還是BST? –

+0

但是,您的問題的答案几乎可以肯定地在全面的[時區文檔]中找到(https://docs.djangoproject.com/en/1.8/topics/i18n/timezones/)。 –

回答

1

而不是使用time.time(),datetime.now(),datetime.utcnow(),當在Django中使用from django.utils import timezone and use timezone.now。這是專門設計來處理在Django的這種情況。欲進一步閱讀,請查看here

+0

謝謝。這就是我最終做的 –

+0

@AliSkinner:你應該設置'USE_TZ = True'(如果settings.py是由'django-admin startproject'生成的),那麼''timezone.now()'會返回一個可識別時區的日期時間對象(UTC時區可能與倫敦時間不同)。設置'TIME_ZONE =歐洲/倫敦',這樣倫敦時間將成爲模板中的默認時間(使用'.activate()'更改每個請求當前時區)。 – jfs

+0

@AliSkinner如果您認爲這是解決您問題的最佳方法,請接受答案,以便其他人也能從中受益。謝謝.. –

1

要獲得在倫敦,英國當前時間:

#!/usr/bin/env python 
from datetime import datetime 
import pytz # $ pip install pytz 

print(datetime.now(pytz.timezone('Europe/London'))) 

它甚至在DST轉換時的本地時間可能是模糊的正常工作。

django中,設置USE_TZ=True並使用timezone.now()以UTC獲取當前時間作爲知曉的日期時間對象。它使用可以使用.activate()設置的當前時區在模板中呈現,否則使用由TIME_ZONE定義的默認時區。

相關問題