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

jxn*_*jxn 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
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分钟信息添加到格式字符串中.

  • 我收到此错误:`'hour' 是此函数的无效关键字参数` (3认同)
  • 修复了,刚刚意识到作者正在使用`datetime.date`而不是`datetime.datetime`.谢谢你抓住它. (2认同)

小智 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)


and*_*art 5

这是你想要的吗?

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)

  • 您应该每天编辑答案以使其保持最新状态。也许使用 Selenium,然后每天运行一个 cron 作业来编辑你的答案。那将是真棒。 (6认同)
  • 明天指的是两天前,而不是昨天。随着时间的推移,它变得越来越不准确。 (5认同)
  • 我应该在第二天将其编辑为昨天 = datetime(2014, 5, 13, 23, 30) :) (2认同)