2014-12-03 109 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。将其设置为“本地”,日期时间在网站上正确显示。

无论如何,谢谢大家的帮助!