我想把日期定在昨天晚上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
首先,将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
(分钟)信息。
可以使用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))
这是你想要的吗?
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
一行,就是这样
import datetime
new_period=(datetime.datetime.today()- datetime.timedelta (days=1)).replace(hour=23, minute=30)