[英]Difference between the time objects in python?
這兩個語句之間有什么區別:
import datetime
print datetime.datetime.now()
datetime.datetime(2015、1、28、12、32、9、762118)
from datetime import *
>> datetime.time(datetime.now())
datetime.time(12,33,3,693084)
實際上,我想將Django模型的TimeField與當天少1小時的時間進行比較。 我的代碼段相同:
Mymodel.objects.filter(
follow_up_date=datetime.datetime.now().date,
# commented now
# preferred_time__lt=(
# datetime.datetime.now() - datetime.timedelta(hours=1)),
preferred_time__lt=(datetime.time(datetime.now()) - datetime.timedelta(hours=1)),
)
我的模型:
class Mymodel(models.Model):
follow_up_date = models.DateField("Follow up Date",null=True,blank=True)
preferred_time = models.TimeField(_("Preferred time"),default=now,
null=True,blank=True)
我正在嘗試提取當天計划的所有實例,它們的首選時間已經過去了1個小時。 哪個是“ preferred_time”的正確過濾器? 對於注釋的代碼,我得到了錯誤的結果。 我不清楚。
這是一項cron作業,即在django中每1小時運行一次管理命令
第一個例子:
datetime.datetime(2015, 1, 28, 12, 32, 9, 762118)
您有一個日期時間對象。 它同時具有日期(前三個數字)和時間(后四個數字)。
您提到的第二個對象:
datetime.time(12, 33, 3, 693084)
這只是時間成分。
要比較TimeField
,您只需要時間部分; 對於DateField
,只是日期組件。
在您的代碼中,您具有以下datetime.datetime.now().date
這只是內置函數date
。 您需要調用它:
>>> datetime.datetime.now().date
<built-in method date of datetime.datetime object at 0xb74ac9b0>
>>> datetime.datetime.now().date()
datetime.date(2015, 1, 28)
您也不能執行datetime.time(datetime.datetime.now())
, datetime.time()
是構造函數方法,它不是隱藏其他對象的方法。
您也不能從time
對象中減去timedelta
:
為了獲得正確的結果,您需要從datetime對象減去一小時,然后將其轉換為時間:
>>> (datetime.datetime.now() - datetime.timedelta(hours=1)).time()
datetime.time(9, 27, 16, 93746)
最后,您的過濾器將如下所示:
filter_date = datetime.datetime.now().date()
filter_time = (datetime.datetime.now() - datetime.timedelta(hours=1)).time()
Mymodel.objects.filter(follow_up_date=filter_date,
preferred_time__lt=filter_time)
例如
>>> from datetime import *
>>> datetime.now()
datetime.datetime(2015, 1, 28, 12, 52, 35, 164500)
>>> datetime.time(datetime.now())
datetime.time(12, 52, 41, 97521)
>>>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.