2017-08-24 84 views
0

我有一個字符串列表可能是時間對象。注意:不是日期時間對象或時間戳對象。這些時間沒有提及時代或日期。例如:在Python中將各種人類可讀的時間格式解析爲時間對象(datetime.time)?

time_strings = ['6:00PM', '7:00pm', '8:00am', '17:00:00', '4PM'] 

是否有一個很好的分析工具,可以轉換到這些,而不是datetime.datetime對象(默認情況下輸入當前日期)datetime.time對象?

標準「datetime.datetime.strptime()都需要的時間是已知的格式的,併產生一個datetime.datetime.object,例如:

from datetime import datetime 
datetime.strptime('6:00', '%H:%M') 

收率:datetime.datetime(1900 ,1,1,6,0)

我曾嘗試以下:

from dateutil.parser import parse 
parse(time_strings[0]) 

收率:datetime.datetime(2017年,8,24,18,0)

import pandas as pd 
pd.to_datetime(time_strings[0]) 

收率:時間戳( '2017年8月24日18:00:00')

from pytimeparse import parse as tparse 
tparse(time_strings[0]) 

失敗(返回空值)

import parsedatetime 
cal = parsedatetime.Calendar() 
cal.parse(time_strings[0]) 

收率:(time.struct_time的(tm_year = 2017,tm_mon = 8,tm_mday = 24,tm_hour = 18,tm_min = 0,tm_sec = 0,tm_wday = 3,tm_yday = 236,tm_isdst的= 1), 2)

對於我的目的,重要的是沒有日期可以推斷,如果不是數據。

是否有更好的python實用程序(python 3)可以將各種可讀時間表達式轉換爲datetime.time對象?

回答

0

我已經發現最好的解決辦法是從熊貓核心庫:

from pandas.core.tools.datetimes import to_time 
to_time(time_strings[0]) 

收率:datetime.time(18,0)

哪個是所希望的輸出。但是,它不承認時間格式,例如(下午4點,3點等),歡迎提供更好的解決方案。

相關問題