2014-05-13 78 views
14

我想讓日期在昨天晚上11點30分。Python設置日期時間爲特定時間

這裏是我的代碼:

import datetime 
    yesterday = datetime.date.today() - datetime.timedelta (days=1) 
    PERIOD=yesterday.strftime ('%Y-%m-%d') 
    new_period=PERIOD.replace(hour=23, minute=30) 
    print new_period 

但是我得到這個錯誤:

TypeError: replace() takes no keyword arguments 

任何幫助,將不勝感激。

回答

23

首先,將datetime.date.today()更改爲datetime.datetime.today(),以便您可以操縱一天中的時間。

然後在將時間轉換爲字符串之前調用replace

所以不是:

PERIOD=yesterday.strftime ('%Y-%m-%d') 
new_period=PERIOD.replace(hour=23, minute=30) 

這樣做:

new_period=yesterday.replace(hour=23, minute=30).strftime('%Y-%m-%d') 
print new_period 

也請記住,你將其轉換爲顯示器沒有關於小時或分鐘信息的字符串。如果您對此感興趣,請在小時內添加%H,在格式字符串中添加%M以獲取分鐘信息。

+1

我得到這個錯誤:'「小時」是這個function' – jxn

+1

修正了一個無效的關鍵字參數,只是意識到筆者使用'datetime.date'代替'datetime.datetime'。感謝您的支持。 – huu

-1

這是你想要的嗎?

from datetime import datetime 
yesterday = datetime(2014, 5, 12, 23, 30) 
print yesterday 

編輯

from datetime import datetime 
import calendar 

diff = 60 * 60 * 24 

yesterday = datetime(*datetime.fromtimestamp(calendar.timegm(datetime.today().utctimetuple()) - diff).utctimetuple()[:3], hour=23, minute=30) 

print yesterday 
+5

明天這將提前兩天,而不是昨天。隨着時間的推移,它越來越不準確。 – huu

+0

大聲笑...你的第一個答案(編輯前)給了我一個笑聲。 – alfonso

+2

我應該編輯它到 昨天=日期時間(2014,5,13,​​23,30) 在第二天:) – andmart

相關問題