如何在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 中将列从字符串更改为日期?