我有一个日期字符串像这样,然后使用strptime()
所以它这样添加时间DATETIME
my_time = datetime.datetime.strptime('07/05/15', '%m/%d/%Y')
,现在我要到23小时59分钟添加到my_time
我已经试过.timedelta
但它不起作用?我怎么能这样做?
我有一个日期字符串像这样,然后使用strptime()
所以它这样添加时间DATETIME
my_time = datetime.datetime.strptime('07/05/15', '%m/%d/%Y')
,现在我要到23小时59分钟添加到my_time
我已经试过.timedelta
但它不起作用?我怎么能这样做?
之后添加时间;你可以用datetime.replace()
method这样做产生新datetime
对象:
my_time = datetime.datetime.strptime('07/05/15', '%m/%d/%y')
my_time = my_time.replace(hour=23, minute=59)
的datetime.strptime()
设置小时和分钟值恢复为默认,0
。请注意,对于两位数的年份(如15
),您将使用%y
,而不是%Y
,这是一个四位数的年份。
您也可以使用datetime.combine()
class method配对了date
和time
对象:
my_time = datetime.datetime.strptime('07/05/15', '%m/%d/%y')
my_time = datetime.datetime.combine(my_time.date(), datetime.time(23, 59))
如果你觉得你必须使用一个timedelta()
,考虑到加入它会再次产生一个新的datetime
对象。你可以使用增强分配给它添加“就地”:
my_time = datetime.datetime.strptime('07/05/15', '%m/%d/%y')
my_time += datetime.timedelta(hours=23, minutes=59)
演示:
>>> import datetime
>>> my_time = datetime.datetime.strptime('07/05/15', '%m/%d/%y')
>>> my_time.replace(hour=23, minute=59)
datetime.datetime(2015, 7, 5, 23, 59)
>>> datetime.datetime.combine(my_time.date(), datetime.time(23, 59))
datetime.datetime(2015, 7, 5, 23, 59)
>>> my_time + datetime.timedelta(hours=23, minutes=59)
datetime.datetime(2015, 7, 5, 23, 59)
如果您需要添加负值或超过一天的金额,那么只有'timedelta()'解决方案可以工作。 – jfs
首先,根据您提供的日期字符串时,format
似乎是错的,你应该使用%y
(小y)为2位数年份,%Y
(大写Y)为4位数年份。
然后,您可以使用timedelta将时间添加到my_time中,如下所示,但添加操作会生成新的datetime对象,但不会更改my_time
。
因此,你需要将它分配回你my_time
这样的 -
>>> import datetime
>>> my_time = datetime.datetime.strptime('07/05/15', '%m/%d/%y')
>>> my_time = my_time + datetime.timedelta(hours=23,minutes=59)
>>> my_time
datetime.datetime(2015, 7, 5, 23, 59)
什么是你的代码使用?它适用于我 –
你问你是否有代码“试过”但没有发布作品?如果你知道它不起作用,你希望有什么人在没有看到代码的情况下告诉你这件事? –