我想把这个日期定在昨天晚上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
Run Code Online (Sandbox Code Playgroud)
但是我收到这个错误:
TypeError: replace() takes no keyword arguments
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
huu*_*huu 41
首先,datetime.date.today()
改为datetime.datetime.today()
让你可以操纵一天的时间.
然后replace
在将时间转换为字符串之前调用.
所以代替:
PERIOD=yesterday.strftime ('%Y-%m-%d')
new_period=PERIOD.replace(hour=23, minute=30)
Run Code Online (Sandbox Code Playgroud)
做这个:
new_period=yesterday.replace(hour=23, minute=30).strftime('%Y-%m-%d')
print new_period
Run Code Online (Sandbox Code Playgroud)
另外请记住,您要将其转换为的字符串不会显示有关小时或分钟的信息.如果您对此感兴趣,请将%H
小时和%M
分钟信息添加到格式字符串中.
小智 6
您可以使用datetime.combine(date,time,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))
Run Code Online (Sandbox Code Playgroud)
这是你想要的吗?
from datetime import datetime
yesterday = datetime(2014, 5, 12, 23, 30)
print yesterday
Run Code Online (Sandbox Code Playgroud)
已编辑
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
Run Code Online (Sandbox Code Playgroud)