You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python Arrow库严格校验日期时间字符串格式?

Arrow库如何强制严格匹配日期时间格式校验?

我尝试用Python的Arrow库校验输入的日期时间字符串,发现部分格式不匹配的场景没有抛出异常,导致无法有效校验:

符合预期的校验场景

当格式与字符串完全匹配时,解析正常:

>>> a=arrow.get('2023-12-06 10:01:02','YYYY-MM-DD HH:mm:ss')
>>>
>>> a=arrow.get('Wednesday 2023-12-06 10:01:02','dddd YYYY-MM-DD HH:mm:ss')
>>>
>>> a=arrow.get('Wed 2023-12-06 10:01:02','ddd YYYY-MM-DD HH:mm:ss')

当格式与字符串不匹配时,部分场景会抛出ParserMatchError:

>>> a=arrow.get('Wed 2023-12-06 10:01:02','dddd YYYY-MM-DD HH:mm:ss')

arrow.parser.ParserMatchError: Failed to match 'dddd YYYY-MM-DD HH:mm:ss' when parsing 'Wed 2023-12-06 10:01:02'

不符合预期的校验场景

但有些格式明显不匹配的情况却能成功解析:

>>> a=arrow.get('Wednesday 2023-12-06 10:01:02','YYYY-MM-DD HH:mm:ss')
>>>
>>> a=arrow.get('Wed Wednesday 2023-12-06 10:01:02','YYYY-MM-DD HH:mm:ss')

希望所有格式不完全匹配的场景都能抛出异常,请问如何让Arrow强制严格匹配格式?


解决方案

使用Arrow的get方法时,传入strict=True参数即可启用严格匹配模式,此时任何与指定格式不完全匹配的字符串都会抛出ParserMatchError。

测试示例:

>>> a=arrow.get('Wednesday 2023-12-06 10:01:02','YYYY-MM-DD HH:mm:ss', strict=True)
arrow.parser.ParserMatchError: Failed to match 'YYYY-MM-DD HH:mm:ss' when parsing 'Wednesday 2023-12-06 10:01:02'

>>> a=arrow.get('Wed Wednesday 2023-12-06 10:01:02','YYYY-MM-DD HH:mm:ss', strict=True)
arrow.parser.ParserMatchError: Failed to match 'YYYY-MM-DD HH:mm:ss' when parsing 'Wed Wednesday 2023-12-06 10:01:02'

严格匹配模式下,只有字符串和格式完全一致时才能成功解析,完全符合校验需求。

内容的提问来源于stack exchange,提问作者user1599391

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 13:44:51