2014-05-13 79 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

相关问题