繁体   English   中英

我如何比较timezone.now和item.deadline

[英]how can i compare timezone.now and item.deadline

嗨,我想old book sale service for university student提供old book sale service for university student

我创建ItemPost模型,并且当用户发布其图书时,ItemPost的截止日期保存在deadline

from django.db import models
from django.conf import settings
from django.utils import timezone


def localtime():
    return timezone.localtime(timezone.now())


class ItemPost(models.Model):


    title = models.TextField(
        )

    created_at = models.DateTimeField(
        default=localtime
        )

    is_deleted = models.BooleanField(
        default=False,
        verbose_name="삭제된 포스트",
        )

    # 마감날짜를 구하는 함수
    def deadline_def(self):
        year_of_item_created = self.created_at.year

        if self.created_at.month <= 6:
            return timezone.datetime(year_of_item_created, 6, 30)
        else:
            return timezone.datetime(year_of_item_created, 12, 31)

    deadline = property(deadline_def)

    # 등록된 학기가 끝난 포스트인지 확인
    def is_ended_semester_def(self):
        now = timezone.now()
        if now > self.deadline:
            return True
        return False

    is_ended_semester = property(is_ended_semester_def)

    def __str__(self):
       return self.title

我想比较项目的截止日期timezone.now()

并返回True或False

但是我不能命令item.is_ended_semester

TypeError: can't compare offset-naive and offset-aware datetimes

我该如何解决这个问题?

item.deadline
> datetime.datetime(2017, 6, 30, 0, 0)

timezone.now()
> datetime.datetime(2017, 7, 14, 8, 50, 57, 91304, tzinfo=<UTC>)

我使用timezone.utc解决了我的问题

# 마감날짜를 구하는 함수
def deadline_def(self):
    year_of_item_created = self.created_at.year

    if self.created_at.month <= 6:
        return timezone.datetime(year_of_item_created, 6, 30, tzinfo=timezone.utc)
    else:
        return timezone.datetime(year_of_item_created, 12, 31, tzinfo=timezone.utc)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM