簡體   English   中英

如何正確使用 Arrow Python 中的“MMM”解析令牌

[英]How to correctly use the "MMM" parse token in Arrow Python

我在電子表格中有許多日期時間,如下所示:

July 29, 2022 @ 9:44 AM
Aug 2, 2022 @ 6:30 PM
...

我正在嘗試使用以下內容解析這些,但出現異常:

>>> import arrow
>>> myformat = "MMM D, YYYY @ H:MM A"
>>> arrow.get("Aug 2, 2022 @ 11:37 PM", myformat)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\enricojr\Projects\python-lox\.venv\lib\site-packages\arrow\api.py", line 91, in get
    return _factory.get(*args, **kwargs)
  File "C:\Users\enricojr\Projects\python-lox\.venv\lib\site-packages\arrow\factory.py", line 295, in get
    dt = parser.DateTimeParser(locale).parse(
  File "C:\Users\enricojr\Projects\python-lox\.venv\lib\site-packages\arrow\parser.py", line 346, in parse
    return self._build_datetime(parts)
  File "C:\Users\enricojr\Projects\python-lox\.venv\lib\site-packages\arrow\parser.py", line 701, in _build_datetime
    datetime(
ValueError: month must be in 1..12
>>> arrow.__version__
'1.2.2'
>>>

文檔指出“MMM”是縮寫月份的標記,但它期望的是 1 到 12 之間的數字。 我是在錯誤地使用令牌,還是這里有其他問題?

Python 版本:3.10.4 箭頭版本:1.2.2 操作系統:Windows 10,語言環境由 ZA7F5F35426B927411FC9231B56382173 報告為en_US 56382173。

>>> import ctypes
>>> windll = ctypes.windll.kernel32
>>> windll.GetUserDefaultUILanguage()
1033

(1033 是 en_US)

我認為問題出在格式字符串中的分鍾數:

myformat = "MMM D, YYYY @ H:MM A"

分鍾應該是mm ,小寫,問題就在那里,而不是MMM

因此,當您執行arrow.get("Aug 2, 2022 @ 11:37 PM", myformat)時,它會抱怨 37 在 1 和 12 之外。

https://arrow.readthedocs.io/en/latest/index.html

  • 月代幣:MM 01、02、03... 11、12

  • 分鍾標記:mm 00, 01, 02 ... 58, 59

此外,展望未來,請注意“七月”和“八月”是不同的格式。

暫無
暫無

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

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