我保存了最後一次訪問頁面,並且自升級到Django 1.8以來,我所有的日期都變得詭異......我真的,真的不知道它。Django的timezone.怪異行爲()
我基本上有一個API,它被設置在美國各地的自助服務終端電腦戳到,但是我想知道是否在某個時間點亭子在最近3分鐘內登記過了。我不在乎它在哪個時區。
我有一個簡單DateTimeField字段:
lastcheckintime = models.DateTimeField(blank=True, null=True, auto_now=False)
而當API被調用時,我只需保存此:
monitor.lastcheckintime = timezone.now()
隨着調試日誌,看起來像它的保存在正確的UTC時間數據庫。我正在檢查一臺顯示器是否在線:
@property
def is_online(self):
if self.lastcheckintime is None:
return False
time_threshold = timezone.now() - timedelta(minutes=3)
return self.lastcheckintime > time_threshold
它曾經是完美的,直到我升級。我不知道它是Django的的1.8或pytz本身的升級,但現在看起來是這樣的:
(在我的時區是下午10點29分)
而且怪異的一部分這些線是否改變!並不總是在錯誤的時間顯示器。此外,整個事情是關閉了7個小時(我格林威治標準時-7)。任何其他模型看起來工作正常,我完全失去了爲什麼這個行爲不正常。
對我可能錯過的東西有任何想法?
謝謝!
我想不出在1.8版本中會有什麼變化導致這種情況。 'USE_TZ'的價值是什麼?您看到的行爲看起來像是從'USE_TZ = True'變爲'USE_TZ = False'。 –
[''timezone.now()'源代碼](https://github.com/django/django/blob/2e05ef4e18c8fea0c199e4fc32278cce11158ac0/django/utils/timezone.py#L316)也暗示'settings.USE_TZ'可能有在你的環境中改變。 – jfs
我的USE_TZ仍然設置爲true。在我的情況下,每個設備的時區無關緊要? (無論如何,它們應該全部在同一個中) –