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

Posted

技术标签:

【中文标题】如何在python中将字符串日期(2021年1月25日)转换为y-m-d日期(2021-01-01)【英文标题】:How to convert string date (Jan 25, 2021) to y-m-d date (2021-01-01) in python 【发布时间】:2021-04-29 20:05:40 【问题描述】:

我有类似Jan 25, 2021 的字符串(1 月、2 月、3 月、5 月、6 月、7 月、8 月、9 月、10 月、11 月、12 月)如何将其转换为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')

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

【问题讨论】:

你试过datetime.strptime('Jan 25, 2021', '%b %d, %Y').strftime('%Y-%m-%d')吗? 【参考方案1】:

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

您的日期字符串格式为%b %d, %Y,因此您需要在strptime() 中使用相同的掩码。考虑到这一点,这样的函数就可以完成这项工作:

from datetime import datetime


def mdy_to_ymd(d):
    return datetime.strptime(d, '%b %d, %Y').strftime('%Y-%m-%d')

这是一个概念证明:


>>> 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'
>>> 

请记住,strptime() 通过使用屏蔽字符格式匹配日期的 string 创建一个 datetime 对象。在 datetime 对象中获得正确的掩码和正确的表示后,您可以使用 strftime() 将其转换为所需的格式。

更多信息,请查看strftime() and strptime() Format Codes。

【讨论】:

这是一个很好的答案。我还要添加文档说%d 格式代码是“作为零填充十进制数的月份中的日期”,但它似乎也适用于未填充的单个数字,所以像Jan 1, 2021 这样的东西不会不要破坏它。 是的。它足够聪明,可以自己弄清楚。 :-)【参考方案2】:

你可以使用

date_like_you_dont_want = "Jan 2,2021".lower()

day = date_like_you_dont_want[4:6]

if not ',' in day:
    year = date_like_you_dont_want[7:]
else:
    day=date_like_you_dont_want[4]
    year=date_like_you_dont_want[6:]

month=date_like_you_dont_want[:3]
if month =='jan':
    month = '01'
elif month =='fev':
    month = '02'
elif month =='mar':
    month = '03'
elif month =='may':
    month = '04'
elif month =='apr':
    month = '05'
elif month =='jun':
    month = '06'
elif month =='jul':
    month = '07'
elif month =='aug':
    month = '08'
elif month =='sep':
    month = '09'
elif month =='oct':
    month = '10'
elif month =='mov':
    month = '11'
elif month =='dez':
    month = '12'

print(year+'-'+day+'-'+month)

【讨论】:

不要试图重新发明***。请参阅我的回答和strftime and strptime Format Codes。

以上是关于如何在python中将字符串日期(2021年1月25日)转换为y-m-d日期(2021-01-01)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Amazon Redshift 中将列从字符串更改为日期?

如何在java中将日期转换为2016年2月26日[重复]

如何在 xslt 2.0 中将字符串解析为日期

java中将日期日期如何转换成另一种格式??高手!!!

如何在python中将变量字符串输入re.search [重复]

如何在android中将日期转换为firebase时间戳格式