gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 00:55:01 28 4
gpt4 key购买 nike

我无法理解使用的函数:

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

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

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

其次,如果是这样……应该:变量时间不能比当前时区晚 30 天。now();

在下面的函数中

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 和医学水平程序员的新手……但工作时间不多。

最佳答案

Firstly the timezone.now() gives the time that is set in Django … now the datetime.timedelta(days=30)

does it use the internal settings in django as set setting.py or another.

首先,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)

没有django内部时间。 timezone.now() 实际上只是日期时间函数 + 时区。


timedelta 只是一个差异,一个物理学中使用的增量。它对时间一无所知。

当你从一个时间中减去/添加一个增量时,你会根据时间做相应的事情。

所以今天是 2015-09-10。如果您将一天 (timedelta(days=1)) 添加到那显然是 2015-09-11。

在 python 中,通过减去 30 天(如果您愿意,也可以减去 1 个月),然后比较保存的时间是否大于,来检查某件事是否比一个月更近。


为了更好地理解日期时间比较,使用 timestamp() 函数可能有助于将它们转换为 unixtime 并将这些抽象事物视为简单数字:

one_month_ago = (timezone.now() - datetime.timedelta(days=30)).timestamp()
now = timezone.now().timestamp()
print(one_month_ago)
print(now)
if one_month_ago < now:
print("a month ago is smaller")

输出

1439323463.786164
1441915463.786201
a month ago is smaller

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

关于python - Django datetime.timedelta ,如果它们可能是不同的集合,它如何从 timezone.now() 中减去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32510123/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com