使用 strptime 更改日期时间格式

changing datetime format with strptime

我正在尝试从日期时间对象中添加或减去时间,然后将其转换为 strptime,但我收到一条错误消息。

下面是获取日期时间对象的 'hour' 的示例,向其添加 + 1,然后尝试对其使用 strptime;

time1 = datetime.datetime.strptime("09/Sep/2015:08:00:00", "%d/%b/%Y:%H:%M:%S")

print time1.hour
print time1.hour + 1

> 8
  9

time3 = time1.hour + 1
print time3.strptime('%H')

> print time3.strptime('%H')
 AttributeError: 'int' object has no attribute 'strptime'

有什么方法可以操作日期时间对象并更改其格式(使用 strptime 或类似的方法)?

time1.hour 是一个 int1 是一个 int,因此 time3 是一个 int,这就是为什么你收到此错误。

您还应该在最后一行使用 strftime,而不是 strptime

您可以使用 relativedeltatimedelta(请参阅评论),但我想 datetime.replace 会更容易:

time1 = datetime.datetime.strptime("09/Sep/2015:08:00:00", "%d/%b/%Y:%H:%M:%S")

time3 = time1.replace(hour=time1.hour + 1)
print time3.strftime('%H')
>> 09

EDIT 这确实会在 23:00 之后多次失败。使用评论中推荐的方法以获得更强大的解决方案。