Python 转换使用'格式的日期;th';到日期时间进行日期比较?
我知道有人以某种形式问过我这个问题,但我想知道如何转换日期,例如:Python 转换使用'格式的日期;th';到日期时间进行日期比较?,python,date,datetime,python-dateutil,Python,Date,Datetime,Python Dateutil,我知道有人以某种形式问过我这个问题,但我想知道如何转换日期,例如: Saturday, May 18th, 2019 到类似2019-05-18这样的日期,以便我可以将其与其他日期进行比较。我知道dateutil可以这样做,但不幸的是,我使用的是Pycharm,如果不将Python从2.7升级到3,它将不允许我安装该软件包。有没有一种方法可以简单地在Python中实现这一点?您也可以将datetime与re模块一起使用: >>> from datetime import da
Saturday, May 18th, 2019
到类似2019-05-18这样的日期,以便我可以将其与其他日期进行比较。我知道dateutil可以这样做,但不幸的是,我使用的是Pycharm,如果不将Python从2.7升级到3,它将不允许我安装该软件包。有没有一种方法可以简单地在Python中实现这一点?您也可以将
datetime
与re
模块一起使用:
>>> 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)
>>>
>>从datetime导入datetime
>>>进口稀土
>>>s=‘2019年5月18日星期六’
>>>datetime.strtime(re.sub(“(\d+)(st | nd | rd | th)”,\g',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
>>>
打印(datetime.strtime(re.sub(“(\d+)(st | nd | rd | th)”,\g',s),“%A,%B%d,%Y”)
2019-05-18 00:00:00
>>>
,但这是一种不使用re的解决方案,适用于不熟悉regexp的人:
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')
但是python2.7是生命的终结,为什么不切换到python呢3@DeveshKumarSinghU9转发:谢谢-除了一个小问题外,这个功能几乎完美无瑕。替换“nd”是有问题的,因为“Sunday”变成了“Suay”。是否有方法抛出异常?例如,如果string=“Sunday”或“星期四”(这两种情况下都会看到删除的字符与上面的代码一起)使用re.sub(“(\d+)(st | nd | rd | th)”,\g',s)
。