2017-09-16 156 views
-3

我想減去string型時間我如何計算python中的時間浮點微秒?

a = "2017-04-15 21:10:02.026" 
b = "2017-10-15 10:09:57.321" 

我想a-b

請別人幫我謝謝

+1

使用['datetime'](https://docs.python.org/2/library/datetime.html#datetime-objects)模塊。具體來說,查看'strptime'來首先創建你的'datetime'對象。 – roganjosh

回答

2

你需要將它們轉換到一個datetime

from datetime import datetime 

a = "2017-04-15 21:10:02.026" 
b = "2017-10-15 10:09:57.321" 

dt_a = datetime.strptime(a, "%Y-%m-%d %H:%M:%S.%f") 
dt_b = datetime.strptime(b, "%Y-%m-%d %H:%M:%S.%f") 

print dt_a - dt_b 

這將顯示:

-183 days, 11:00:04.705000 

datetime.strptime()用於通過指定如何格式化字符串來將字符串轉換爲datetime。每個%都會告訴它日期/時間的每個部分在哪裏。

在你的情況下,所需要的格式如下:

%Y - 帶世紀的年份作爲十進制數。
%m - 月爲零填充十進制數。
%d - 當月的一天爲零填充十進制數。
%H - 小時(24小時制)作爲零填充十進制數。
%M - 分鐘爲零填充的十進制數字。
%S - 第二個作爲零填充的十進制數。
%f - 以十進制數表示的微秒數,左側填零。

減去兩個datetime對象會返回一個timedelta對象。有了這個,你可以確定total_seconds()。例如

result = dt_a - dt_b 
print result.total_seconds() 
0

根據this你可以做這樣(見鏈接的文檔中的所有%選項:

>>> from datetime import datetime 
>>> a = "2017-04-15 21:10:02.026" 
>>> b = "2017-10-15 10:09:57.321" 
>>> oA = datetime.strptime(a,"%Y-%m-%d %H:%M:%S.%f") 
>>> oB = datetime.strptime(b,"%Y-%m-%d %H:%M:%S.%f") 
>>> oA - oB 
>>> datetime.timedelta(-183, 39604, 705000) 

根據thistimedelta應該返回(days, seconds, milliseconds)這樣

0

使用datetime如下:

import datetime 


if __name__ == "__main__": 
    a = "2017-04-15 21:10:02.026" 
    b = "2017-10-15 10:09:57.321" 
    a_time = datetime.datetime.strptime(a, "%Y-%m-%d %H:%M:%S.%f") 
    b_time = datetime.datetime.strptime(b, "%Y-%m-%d %H:%M:%S.%f") 
    print (b_time - a_time).total_seconds() 

b_time - a_time創建一個timedelta對象,它具有多個屬性,您可以在其中找到here; total_seconds以秒爲單位返回時間差。