簡體   English   中英

Django datetime.timedelta,它是如何從timezone.now()減去它們是否可能是不同的集合

[英]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.

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