我如何比较时区和日期时间的实例
how can i compare instances of timezone and datetime
我在 Django 中创建了一个待办事项模型,使用清除旧待办事项的方法应该删除超过 24 小时前发布的待办事项,我似乎无法比较我的日期时间和时区实例如果条件
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:\projectsstDjangoApp\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'
从 datetime
中减去 datetime
得到 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
.
我在 Django 中创建了一个待办事项模型,使用清除旧待办事项的方法应该删除超过 24 小时前发布的待办事项,我似乎无法比较我的日期时间和时区实例如果条件
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:\projectsstDjangoApp\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'
从 datetime
中减去 datetime
得到 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
.