2017-09-05 64 views
0

第一部分:我打開文件的Python腳本,獲取格式的起始時間碼字符串:的Python:從文件獲取時間和比較

136:17:30:00(DOY:HH :MM:SS)

而且在格式的停止時間碼字符串:

137:01:30:00(DOY:HH:MM:SS)

用戶進入啓動一年(2017年),和stopyear(2017)。

我想知道如何啓動和停止時間碼轉換(連同今年字符串)變成了「日期時間」的對象。這被認爲是實驗開始和結束時間。

第二部分:用戶將進入一個 「記錄」 的開始時間和一個 「記錄」 停止時間在格式:

2017:136:18:00:00(YEAR:DOY:HH:MM:SS) 2017: 137:01:00:00(YEAR:DOY:HH:MM:SS)。

這被認爲是記錄開始/停止時間

我想轉換成DateTime對象,以及。我想這將是和第一部分一樣的機制。

我想先驗證該記錄停止/啓動時間是實驗中的停止/啓動時間,並能夠從起始時間減去停止時間。

一些Python文檔的是對如何做到這一點迷惑我。有任何想法嗎?提前致謝。

回答

2

Python的datetime.strptime()是用於轉換日期的字符串表示爲datatime對象。它可以讓你在一年中的天指定%j如下:

from datetime import datetime 

print datetime.strptime("136:17:30:00", "%j:%H:%M:%S").replace(year=2017) 
print datetime.strptime("2017:136:17:30:00", "%Y:%j:%H:%M:%S") 

這將顯示:

2017-05-16 17:30:00 
2017-05-16 17:30:00 

.replace()被用來給datetime對象一年,否則將默認爲1900

總結:

%j - 年作爲零填充十進制數日。
%Y - 以十進制數表示的世紀。
%H - 小時(24小時制)作爲零填充十進制數。
%M - 分鐘爲零填充的十進制數字。
%S - 第二個作爲零填充的十進制數。

如果您轉換您的開始和結束碼爲datetime對象,你就可以減去他們給你的時間之間,如下所示:

dt_start = datetime.strptime("136:17:30:00", "%j:%H:%M:%S") 
dt_end = datetime.strptime("137:01:30:00", "%j:%H:%M:%S") 

print dt_end - dt_start 

給你:

8:00:00 
+0

OH! .replace()是我今年所需要的。我認爲這樣做會很好,感謝您的回覆! – Eric

+0

很高興幫助!不要忘記點擊向上/向下按鈕上的灰色勾號來選擇一個答案作爲您接受的解決方案。 –

0

我不不知道你想從你的問題中得到什麼。你在一年中做什麼。我希望以下內容能幫助你:

time1='136:17:30:00' 
time2='137:01:30:00' 
#yr=2017 

from datetime import timedelta 

def objMaker(time): 
    arr=time1.split(':') 
    obj=timedelta(hours=int(arr[1]),minutes=int(arr[2]),seconds=int(arr[3])) 
    return obj 

obj1=objMaker(time1) 
obj2=objMaker(time2) 
+0

是的,除了之前的文章外,我現在可以根據自己的時間做所需,謝謝! – Eric