【问题标题】:Converting date formatted with 'th' to datetime for date comparisons?将使用“th”格式化的日期转换为日期时间以进行日期比较?
【发布时间】:2019-05-19 02:24:09
【问题描述】:

我知道有人以某种形式询问过这个问题,但我想知道如何转换日期,例如:

Saturday, May 18th, 2019

类似2019-05-18 这样我就可以将它与其他日期进行比较。我知道 dateutil 可以这样做,但不幸的是我使用的是 Pycharm,如果不将 Python 从 2.7 升级到 3,它不会让我安装该软件包。有没有办法简单地在 Python 中做到这一点?

【问题讨论】:

  • 但是python2.7已经报废了,为什么不切换到python 3
  • @DeveshKumarSingh pythonclock.org

标签: python date datetime python-dateutil


【解决方案1】:

您也可以将datetimere 模块一起使用:

>>> from datetime import datetime
>>> import re
>>> s = 'Saturday, May 18th, 2019'
>>> datetime.strptime(re.sub('(\d+)(st|nd|rd|th)', '\g<1>', s), '%A, %B %d, %Y')
datetime.datetime(2019, 5, 18, 0, 0)
>>> 

并且打印得更好:

>>> print(datetime.strptime(re.sub('(\d+)(st|nd|rd|th)', '\g<1>', s), '%A, %B %d, %Y'))
2019-05-18 00:00:00
>>> 

【讨论】:

  • U9-Forward :谢谢 - 除了一个小问题外,这几乎可以完美运行。替换“nd”是有问题的,因为“Sunday”变成了“Suay”。有没有办法抛出异常?
  • 即除了 string = "Sunday" 或 "Thursday" (这两个都会看到使用上面的代码删除的字符)
  • 改用re.sub('(\d+)(st|nd|rd|th)', '\g&lt;1&gt;', s)
【解决方案2】:

The regex solution is preferable in my opinion,但这是不使用re的解决方案,对于不熟悉正则表达式的人:

from datetime import datetime

s = 'Saturday, May 18th, 2019'
sl = s.split()
sl[2] = sl[2][:-3] # remove 'th,'
datetime.strptime(' '.join(sl), '%A, %B %d %Y')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多