[英]Django datetime.timedelta , how does its subtract from timezone.now() if they are posssibly different sets
我無法理解使用的函數:
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和med級程序員的新手......但是時間不長。
首先,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)
沒有django內部時間。 timezone.now()
實際上只是日期時間函數+時區。
timedelta
然后只是一個差異,一個在物理學中使用的delta。 它對時間一無所知。
從您執行相應事物的時間到時間減去/添加增量時。
所以今天是2015-09-10。 如果你添加一天( timedelta(days=1)
),那顯然是2015-09-11。
支票是否東西比Python中的一個月是從現在開始從其減去30天(或1個月,如果你喜歡),然后比較,如果保存的時間比這更大做得更近一些。
要更好地理解日期時間比較,可以幫助將這些轉換為unixtime,並通過使用timestamp()
函數將這些抽象事物看作簡單數字:
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
在不轉換為a month ago is smaller
時間戳打印a month ago is smaller
情況下執行此操作a month ago is smaller
。
我認為你對測試方法的描述感到困惑。
此測試方法是測試was_published_recently()
通過不返回超過1天的問題來正常工作。
為了測試它,他們正在做的是將帖子的日期設置為比今天少30天(即- datetime.timedelta(days=30)
,然后檢查該帖子的was_published_today()
是True還是False。
如果為False,則測試通過。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.