2017-01-09 108 views
4

我正努力在時間戳中添加不同的秒數。向日期時間添加秒

讓我們假設我想添加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

回答

4

只需添加一個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秒

6

您可以使用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'因爲這是在問題中(儘管我承認這是一個細節)。 –

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' 

在導入後,你可以看到,箭頭可以將時間戳轉換爲內部時間格式,做一行代碼移位的第一條語句。

在接下來的聲明中,我保存了該結果,並顯示了以常規方式操作內部格式很容易。 (更多可用箭頭。)