将未知格式的日期字符串转换为datetim

2024-04-24 04:51:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构建一个通用的自定义strToDatetime(string)函数。日期字符串的格式可能不同。两种最流行的选择似乎是datetime.strptime(string, format)和{}。似乎datetime.strptime()需要一个格式,dateutil.parser()不需要,因此可能的解决方案是:

  1. 测试日期字符串模式以查找日期字符串格式并使用datetime.strptime()
  2. 使用dateutil.parser()

这是对的吗?备选方案1(难度更大,将来可能需要维护)具有优势,例如性能?在


Tags: 函数字符串formatparserdatetimestring格式模式
2条回答

我总是选择最简单的(dateutil.parser),总有人替你做这项工作,而且不太可能在格式错误的日期(根据你的格式)吐出错误。在

当然,有时您希望它在格式错误、可能不明确的日期抛出错误,在这种情况下,您应该使用strptime!在

性能测试:

我分别给parse(d)和{}打了100000次电话。在

parse(d) took 5.62201309204 seconds
datetime.datetime.strptime(d, f) took 1.78140687943 seconds
    (where d = '11-02-1980' and f = '%m-%d-%Y')

似乎如果你知道精确的日期格式,那么strptime大约快3倍,虽然这不是一个非常科学的实验,但我认为它给出了一个很好的指示。

那么,这种轻微的速度提升值得额外的不必要的并发症/头痛吗?这取决于你(但可能不是)。在

dateutil的parse()方法非常灵活,几乎可以解析任何您向它抛出的内容。在

但是,由于这种灵活性,如果您的输入被限制为一定数量的模式,那么检查这些模式并使用datetime.datetime.strptime()的自定义代码可以轻松地击败它。在

因为这完全取决于您需要测试的模式的数量,所以您唯一能做的就是测量哪个模式对于您的特定用例来说会更快。在

相关问题 更多 >