在日期时间上添加秒数

10

我在尝试给时间戳添加不同的秒数。

假设我想要在2016-12-02 13:26:49上加1136秒。这是我目前的进展:

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)

我在另一篇文章中看到了类似于我想要的东西,但那不是用于Python的。

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

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

提前感谢任何帮助。


2
https://docs.python.org/2/library/datetime.html#timedelta-objects - user554546
5个回答

12
你可以使用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”,因为这在问题中提到了(尽管我承认这是一个细节)。 - Willem Van Onsem

9

只需将一个timedelta添加到timestamp即可:

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。


3
添加一个时间差 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)

1
使用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

0
我知道,已经有四个答案了,但考虑使用箭头模块。它可以使许多日期和时间操作更加容易。
>>> 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'

在导入语句后的第一条语句中,您可以看到arrow可以将您的时间戳转换为内部时间格式,并在一行代码中进行偏移。
在下一条语句中,我保存了该结果并展示了通常的方式轻松操作内部格式。 (使用arrow还有更多选项。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接