向日期时间添加秒

问题描述:

我正努力在时间戳中添加不同的秒数。向日期时间添加秒

让我们假设我想添加1136秒到2016-12-02 13:26:49。这是我迄今:

import datetime 

if __name__ == '__main__': 
    timestamp = datetime.datetime(year=2016, month=12, day=02, hour=13, minute=26, second=49) 
    offset = 1140 
    m, s = divmod(offset, 60) 
    h, m = divmod(m, 60) 

我类似我想要的东西another post看到,但不是为Python。

我应该使用datetime.datetime.combine()

我有大量的数据,我不想手动输入每个数字的日期。

非常感谢您的帮助。

+2

https://docs.python.org/2/library/datetime.html#timedelta-objects – 2017-01-09 15:15:06

只需添加一个timedeltatimestamp

timestamp = datetime.datetime(year=2016, month=12, day=02, hour=13, minute=26, second=49) 
d = datetime.timedelta(seconds=1136) 
new_timestamp = timestamp+d 

在控制台中运行以下命令:

$ python 
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import datetime 
>>> timestamp = datetime.datetime(year=2016, month=12, day=02, hour=13, minute=26, second=49) 
>>> d = datetime.timedelta(seconds=1136) 
>>> new_timestamp = timestamp+d 
>>> new_timestamp 
datetime.datetime(2016, 12, 2, 13, 45, 45) 

所以结果是2016年12月12日在 13时45分45秒

您可以使用timedelta为datetime对象添加秒。

>>> import datetime 
>>> now = datetime.datetime.now() 
>>> now 
datetime.datetime(2017, 1, 9, 16, 16, 12, 257210) 
>>> now + datetime.timedelta(seconds=1136) 
datetime.datetime(2017, 1, 9, 16, 22, 12, 257210) 
>>> 
+2

也许修改秒数到'1136'因为这是在问题中(尽管我承认这是一个细节)。 –

添加timedelta

>>> import datetime 
>>> timestamp = datetime.datetime(year=2016, month=12, day=2, hour=13, minute=26, second=49) 
>>> timestamp += datetime.timedelta(seconds=1136) 
>>> timestamp 
datetime.datetime(2016, 12, 2, 13, 45, 45) 

使用timedelta。

import datetime 
from datetime import timedelta 

timestamp = datetime.datetime(year=2016, month=12, day=02, hour=13, minute=26, second=49) 

#offset = 1140 
#m, s = divmod(offset, 60) 
#h, m = divmod(m, 60) 
extra = timedelta(seconds=1136) 

print timestamp + extra 

我所知,已经有答案,但可以考虑使用箭头模块。它使许多日期和时间操作更容易。

>>> import arrow 
>>> arrow.get('2016-12-02 13:26:49').shift(seconds=+1136) 
<Arrow [2016-12-02T13:45:45+00:00]> 
>>> newTime = arrow.get('2016-12-02 13:26:49').shift(seconds=+1136) 
>>> newTime.strftime('%d-%m-%y') 
'02-12-16' 

在导入后,你可以看到,箭头可以将时间戳转换为内部时间格式,做一行代码移位的第一条语句。

在接下来的声明中,我保存了该结果,并显示了以常规方式操作内部格式很容易。 (更多可用箭头。)