我想把这个日期定在昨天晚上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
任何帮助将不胜感激。
答案 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