簡體   English   中英

在Python中將各種人類可讀的時間格式解析為時間對象(datetime.time)?

[英]Parse various human readable time formats to a time object (datetime.time) in Python?

我有一個可能是時間對象的字符串列表。 注意: 不是 datetime對象或timestamp對象。 這些時間沒有參考時代或日期。 例如:

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

是否有一個好的解析工具可以將它們轉換為datetime.time對象,而不是datetime.datetime對象(默認情況下,該對象輸入當前日期)?

標准的'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-08-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對象?

我發現的最佳解決方案是從pandas核心庫中獲取的:

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

產生:datetime.time(18,0)

這是所需的輸出。 但是,它無法識別時間格式,例如(下午4點,凌晨3點等)。歡迎使用更好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM