Python 将用户可理解的日期时间格式字符串转换为strptime可理解格式字符串

Python 将用户可理解的日期时间格式字符串转换为strptime可理解格式字符串,python,datetime-format,Python,Datetime Format,如何将“dd/MM/yyyy”,“HH:MM”,“dd-MMM-yy”,“M/d/yyyyy”等转换为%d/%M/%Y”,%H:%M”,%d-%b-%Y”或%M/%d/%Y”等?您可以将替换扩展到所有可能的时间格式(您也可以编辑此答案以将其包含在此处) 更改日期时间的格式 导入日期时间 d=datetime.datetime.strtime(“2013-05-24”,%Y-%m-%d”) datetime.datetime(2013,5,24,0,0) d、 格式(“%d.%b.%Y”) “20

如何将
“dd/MM/yyyy”
“HH:MM”
“dd-MMM-yy”
“M/d/yyyyy”
等转换为
%d/%M/%Y”
%H:%M”
%d-%b-%Y”
%M/%d/%Y”
等?

您可以将
替换扩展到所有可能的时间格式(您也可以编辑此答案以将其包含在此处)


更改日期时间的格式

导入日期时间

d=datetime.datetime.strtime(“2013-05-24”,%Y-%m-%d”) datetime.datetime(2013,5,24,0,0)

d、 格式(“%d.%b.%Y”) “2013年5月24日”


在两个下划线前后放置的format函数很有趣,但是您希望它对任何有效的
datetime
都有效吗?@jamylak我不理解您的问题。任何无效的
datetime
的示例?我问您是否希望在这里支持整个表:@jamylak不是整个表,只是那些具有等效值的表用户可以理解的表示法。当我在这里的时候,你的意思是什么?
ddd
??
import re

replacements = {
    r'dd': '%d',
    r'd': '%d',
    r'MM': '%m',
    r'M': '%m',
    r'yyyy': '%Y',
    r'HH': '%H',
    r'mm': '%M',
    r'MMM': '%b',
    r'yy': '%Y',
}

def fn(match):
    return replacements[match.group()]

def F(text):
    pat = '|'.join(r'\b' + re.escape(k) + r'\b' for k in replacements)
    return re.sub(pat, fn, text)

>>> F("dd/MM/yyyy")
'%d/%m/%Y'
>>> F("HH:mm")
'%H:%M'
>>> F("dd-MMM-yy")
'%d-%b-%Y'
>>> F("M/d/yyyy")
'%m/%d/%Y'