【问题标题】:emencia.django.newsletter datetime problems with django 1.4emencia.django.newsletter django 1.4 的日期时间问题
【发布时间】:2012-06-13 10:27:20
【问题描述】:

我正在使用emencia.django.newsletter。当我运行“python manage.py send_newsletter”时出现此错误

if self.newsletter.sending_date <= datetime.now() and \ TypeError: can't compare offset-naive and offset-aware datetimes

这是错误的来源:

def can_send(self):

    """Check if the newsletter can be sent"""
if self.test:
    return True

if self.newsletter.sending_date <= datetime.now() and\
   (self.newsletter.status == Newsletter.WAITING or\
    self.newsletter.status == Newsletter.SENDING):
    return True

return False

我使用 Django 1.4

有什么想法吗?

【问题讨论】:

    标签: python django timezone


    【解决方案1】:

    您的sending_date 值是时区感知,但datetime.now()时区幼稚。正如错误消息所说,您无法比较它们。

    答案是在进行比较之前将now 转换为可识别时区的日期时间。

    import datetime
    from django.utils.timezone import utc
    
    now = datetime.datetime.utcnow().replace(tzinfo=utc)
    if self.newsletter.sending_date <= now and \
        ...
    

    有关更多信息,请参阅naive and aware datetime objects 上的 Django 文档。

    【讨论】:

      猜你喜欢
      • 2012-04-20
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 2012-04-21
      相关资源
      最近更新 更多