Python将日期时间设置为特定时间

时间:2014-05-13 22:29:25

标签: python datetime

我想把这个日期定在昨天晚上11点30分。

这是我的代码:

    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

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:34)

首先,将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 :(得分:3)

您可以使用datetime.combine(日期,时间,tzinfo = self.tzinfo)

import datetime
yesterday = datetime.date.today () - datetime.timedelta (days=1)
t = datetime.time(hour=23, minute=30)
print(datetime.datetime.combine(yesterday, t))

答案 2 :(得分:0)

这是你想要的吗?

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