2014-12-03 61 views
0

保存下列模型時,開始日期時間比本地時間少一小時。我已經設置了USE_TZ = TrueTIME_ZONE = "Europe/Madrid"。我想時間少一點是因爲它被稱爲UTC(比歐洲/馬德里少一小時)。 MySQL也存儲錯誤的日期時間。但是,我需要在我的網站上顯示正確的日期時間。日期時間在管理員中是正確的,但在應用程序的其餘部分中是不正確的。保存時間少於一小時datetimefield

我已經嘗試了幾種方法來實現日期時間,但我無法得到它。這是我的實際代碼,分配給起始場:

pytz.timezone("Europe/Madrid").localize(datetime.datetime.now()).strftime("%Y-%m-%dT%H:%M:%S") 

當我執行之前的指令,我得到了正確的日期與print,但在保存時,它被保存(一小時)少。爲什麼?

這是我的模型:

class Event(models.Model): 
    title  = models.CharField(max_length=40) 
    start  = models.DateTimeField(null=True,blank=True) 
    end   = models.DateTimeField(null=True,blank=True) 
    allday  = models.BooleanField(default=False) 
    user  = models.ForeignKey(User) 

編輯-1:

的AJAX調用:

$.ajax({ 
     type: "GET", 
     url: "/projects/{{project.id}}/get_events/", 
     dataType: "json", 
     success: function(response){ 
      data = eval("(" + response + ")") 

      var events = []; 

      for(i=0;i<data.length;i++){ 

       events.push({ 
         id: data[i].pk, 
         title: data[i].fields['title'], 
         start: data[i].fields['start'], 
         end: data[i].fields['end'], 
         className: "event", 
         defaultTimedEventDuration: "00:30:00" 
       }); 
      } 
     } 
});  
+1

您是否閱讀過[時區文檔](https://docs.djangoproject.com/zh/dev/topics/i18n/timezones/)?日期時間以UTC格式存儲,因爲識別日期時間*總是*以UTC格式存儲。但是,顯示給用戶的時區基於當前時區,默認情況下是TIME_ZONE時區。這就是爲什麼你在管理中獲得正確的價值。請定義「應用程序的其餘部分」,以便清楚地知道你在哪裏得到錯誤的值。 – 2014-12-03 12:01:42

+0

「應用程序的其餘部分」是指網站。我有一個日曆插件,其中顯示的每個事件都少了一個小時(UTC日期時間)。如何引用本地時間或當前時區而不是以UTC存儲的日期時間? – DavidRguez 2014-12-03 12:10:40

+0

我通過AJAX調用獲取所有日曆事件,使用簡單的'events = Event.objects.filter(user = user)'查詢事件並序列化它們'data = serializers.serialize('json',events) 」。我把AJAX調用放在帖子的編輯部分。 – DavidRguez 2014-12-03 12:14:17

回答

0

它看起來像問題是與日曆插件(FullCalendar),和而不是整個應用程序。我意識到FullCalendar有一個時區選項,它被設置爲false。將其設置爲「本地」,日期時間在網站上正確顯示。

無論如何,謝謝大家的幫助!