我正在构建一个通用的自定义strToDatetime(string)
函数。日期字符串可以采用某种不同的格式。 2个最受欢迎的替代品似乎是datetime.strptime(string, format)
和dateutil.parser(string)
。似乎datetime.strptime()
需要格式而dateutil.parser()
不需要,因此可能的解决方案似乎是:
datetime.strptime()
dateutil.parser()
这是对的吗?备选方案1(更难以及将来可能需要维护)具有诸如性能等优点吗?
答案 0 :(得分:3)
dateutil的parse()
方法非常灵活,几乎可以解析你抛出的任何内容。
但是,由于这种灵活性,如果您的输入仅限于一定数量的模式,那么使用datetime.datetime.strptime()
检查这些模式的自定义代码可能会轻易击败它。
由于这完全取决于您需要测试的模式数量,因此您唯一能做的就是 measure 哪一个对于您的特定用例来说更快 。
答案 1 :(得分:0)
我总是选择最简单的(dateutil.parser),有人总是为你完成工作,并且不太可能在格式不正确(根据你的格式)日期发出错误。
当然,有时你会希望它在错误的,可能含糊不清的日期发出错误,在这种情况下你应该使用strptime
!
我每次致电parse(d)
和datetime.datetime.strptime(d, f)
100,000次。
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倍,因为这不是一个非常科学的实验,但我认为它给出了很好的指示。 < / p>
这种轻微的速度改善是否值得额外的不必要的并发症/头痛?这取决于你(但可能不是)。