Python Django datetime.timedelta,如果它们可能是不同的集合,它如何从timezone.now()中减去

Python Django datetime.timedelta,如果它们可能是不同的集合,它如何从timezone.now()中减去,python,django,datetime,Python,Django,Datetime,我无法理解使用以下功能的函数: time = timezone.now() - datetime.timedelta(days=30) 首先,timezone.now()给出在Django中设置的时间…现在是datetime.timedelta(days=30) 它是否将django中的内部设置用作set setting.py或其他设置 第二,如果是这样的话……应该:可变时间不能比当前时区晚30天 在下面的函数中 def test_was_published_recently_with_old

我无法理解使用以下功能的函数:

time = timezone.now() - datetime.timedelta(days=30)
首先,timezone.now()给出在Django中设置的时间…现在是
datetime.timedelta(days=30)

它是否将django中的内部设置用作set setting.py或其他设置

第二,如果是这样的话……应该:可变时间不能比当前时区晚30天

在下面的函数中

def test_was_published_recently_with_old_question(self):
    """
    was_published_recently() should return False for questions whose
    pub_date is older than 1 day.
    """
    time = timezone.now() - datetime.timedelta(days=30)
    old_question = Question(pub_date=time)
    self.assertEqual(old_question.was_published_recently(), False)
这是如何产生1天大…我想我的问题是不理解

time=timezone.now()-datetime.timedelta(days=30)


我真的很感激你的帮助。我是python和中级程序员的新手……但工作时间不长。

我认为您对测试方法的描述感到困惑

此测试方法通过不返回超过1天的问题来测试
是否最近发布()

为了测试它,他们正在做的是将一篇文章的日期设置为比今天少30天(即
-datetime.timedelta(days=30)
),然后检查该文章的
是否在今天发布()

如果为False,则测试通过

首先,timezone.now()给出在Django中设置的时间…现在是
datetime.timedelta(days=30)

它是否将django中的内部设置用作set setting.py或其他设置

首先,
timezone.now()
只是
datetime.datetime.now()
的一个“改进”版本,它也是时区感知的

timezone.now()
>>> datetime.datetime(2015, 9, 10, 19, 45, 34, 105121, tzinfo=<UTC>)
datetime.datetime.now()
>>> datetime.datetime(2015, 9, 10, 19, 45, 48, 356860)
输出

1439323463.786164
1441915463.786201
a month ago is smaller

一个月前不转换为时间戳打印的情况下执行此操作也会更小。

运行
python manage.py shell
,查看
timezone.now()
是一个
datetime
对象,预期可用于
timedelta
。无关:确保
使用TZ=True
以便
timezone.now()
返回一个可感知的datetime对象,否则返回
.was\u published\u recently()的结果
可能不准确,谢谢,我想这是我的主要困惑,我有点明白了…仍然有点不明白为什么这个函数会在评论中声明的超过一天的帖子返回false…根据Christophers的回答,肯定是delta指定的超过30天的帖子。。。。
1439323463.786164
1441915463.786201
a month ago is smaller