簡體   English   中英

人類可讀的增量時間文本到 Python `timedelta`

[英]Human readable delta time text to Python `timedelta`

我已經看到許多關於如何解析包含日期/時間到datetime時間結構甚至自“紀元”以來的秒數的人類可讀文本的示例。

一些 Pyhton 庫(例如parsedatetimedateparser聲稱能夠解析相對日期/時間(例如“1 分鍾 47 秒前”),但最終結果始終錨定到特定日期/時間。

使用兩個提到的庫的示例:

sdate="1 min 37 seconds ago"
dateparser.parse(sdate)
datetime.datetime(2019, 8, 19, 17, 20, 29, 325230)
pdtCal.parse(sdate)
(time.struct_time(tm_year=2019, tm_mon=8, tm_mday=19, tm_hour=17, tm_min=22, tm_sec=49, tm_wday=0, tm_yday=231, tm_isdst=-1), 2)

不過,我需要的是像timedelta對象一樣簡單的東西,但從我所能學到的,我能做的最好的事情是通過從當前時間中減去解析的datetime時間來計算timedelta

顯然,這不一樣,因為我將添加一個采樣錯誤( datetime.datetime.now()與解析器運行的時間不同)。

所以我問,在 Python 中是否有一種簡單而可靠的方法可以將這個 delta 時間文本直接解析為timedelta對象或標量值(例如秒數)?

謝謝!

有一種方法可以使用設置dateparser指定“錨定日期”:

In [1]: from dateparser import parse
In [2]: from datetime import datetime

In [3]: anchor_date = datetime(2020, 1, 1)
In [4]: parsed_date = parse('1 min 37 seconds ago', settings={'RELATIVE_BASE': anchor_date})
In [5]: parsed_date - anchor_date
Out[5]: datetime.timedelta(days=-1, seconds=86303)

使用相同的日期作為相對基准和增量計算可確保精確的結果。

暫無
暫無

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

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