簡體   English   中英

我如何比較時區和日期時間的實例

[英]how can i compare instances of timezone and datetime

我在 django 中創建了一個 todo 模型,使用了一種清除舊 todo 的方法,該方法應該刪除 24 小時前發布的 todo,我似乎無法在 if 條件下比較日期時間和時區實例

class Todo(models.Model):
    description = models.CharField(max_length=200)
    Todo_date = models.DateTimeField('Todo Date')
    pub_date = models.DateTimeField('Date Published')

    def __str__(self):
        return self.description

    def create_todo(self, description, Todo_date, pub_date):
        todo = Todo(description=description,
                    Todo_date=Todo_date, pub_date=pub_date)
        todo.save()
        return todo

    def delete_todo(self, description):
        todo = Todo.objects.get(description=description)
        todo.delete()
        return "Todo removed"

    def clear_old_todo(self):
        todos = Todo.objects.all()
        time_limit = datetime.timedelta(hours=24)
        for todo in todos:
            if (timezone.now()-todo.pub_date) > (timezone.now()-time_limit):
                todo.delete()
                return "old todo cleared"
>>> Todo.clear_old_todo("self")
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "E:\projects\1stDjangoApp\ToDoList\ToDo\models.py", line 36, in clear_old_todo
    if (timezone.now()-todo.pub_date) > (timezone.now()-time_limit):
TypeError: '>' not supported between instances of 'datetime.timedelta' and 'datetime.datetime'

減去一個datetimedatetime給你一個timedelta ,兩個時間之間的區別。 datetime減去timedelta會給你一個datetime ,一個新的時間戳,與第一個不同,時間為timedelta的量。

timezone.now()-todo.pub_date ,您減去兩個datetime
timezone.now()-time_limit ,您將從datetime減去timedelta

要么想做timezone.now() - todo.pub_date以生成timedelta並檢查該timedelta是否> / <某個特定值(即比較兩個timedelta s),要么您想做timezone.now() - time_limit生成過去的datetime時間並檢查它是否是> / <您的todo.pub_date datetime

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM