如何在python中将字符串日期(2021年1月25日)转换为ymd日期(2021-01-01)

put*_*air 2 python datetime converters

我有像Jan 25, 2021(Jan,Feb,Mar,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)这样的字符串,我该如何将其转换为2021-01-25

我正在定义一个函数,如:

def to_datetime(datestring):  
    
    #date = datetime.strptime(datestring, '%m.%d.%Y')
    #return date.strftime("%Y-%m-%d")
    
    return datetime.strptime(datestring, '%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)

问题是月份词,所以也许我可以将字符串替换为月份数字,然后将其转换,但我被卡住了

acc*_*ias 5

正如您在我的评论中看到的那样,您只需要使用正确的匹配掩码即可。

您的日期字符串采用格式%b %d, %Y,因此您需要在strptime(). 考虑到这一点,像这样的函数将完成这项工作:

from datetime import datetime


def mdy_to_ymd(d):
    return datetime.strptime(d, '%b %d, %Y').strftime('%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)

这是一个概念证明:


>>> from datetime import datetime
>>> 
>>> 
>>> def mdy_to_ymd(d):
...     return datetime.strptime(d, '%b %d, %Y').strftime('%Y-%m-%d')
... 
>>> mdy_to_ymd('Jan 25, 2021')
'2021-01-25'
>>> 
Run Code Online (Sandbox Code Playgroud)

请记住,使用掩码字符格式从匹配日期strptime()创建datetime对象string。一旦在datetime对象中获得正确的掩码和正确的表示,您就可以使用strftime().

有关更多信息,请检查strftime()strptime()格式化代码