簡體   English   中英

python中時間對象之間的區別?

[英]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)
  1. datetime.now()給出日期和時間信息。
  2. datetime.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.

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