我正在尝试将日期格式化为特定格式。该代码已在Windows上使用Python 3.7成功部署。但是,它在Linux Debian 9.11-Oython 3.5上不起作用。无法找出解决方案。非常感谢您的帮助。
def parse_date(date_string: str, date_format: str) -> str:
"""
'2019-04-12T00:00:00.000-07:00' --> "%Y-%m-%dT%H:%M:%S.%f%z"
'2019-04-28T07:25:39.668Z' --> "%Y-%m-%dT%H:%M:%S.%fZ"
"""
req_date = dt.datetime.strptime(date_string, date_format)
return req_date.strftime("%Y-%m-%d")
在Windows上运行
parse_date('2019-04-11T00:00:00.000-07:00', "%Y-%m-%dT%H:%M:%S.%f%z")
Linux上的失败
parse_date('2019-04-11T00:00:00.000-07:00', "%Y-%m-%dT%H:%M:%S.%f%z")
ValueError:时间数据'2019-04-11T00:00:00.000-07:00'不匹配格式'%Y-%m-%dT%H:%M:%S.%f%z'
期望的返回值:'2019-04-11'
我最终使用正则表达式解决了问题,并且可以解决问题。
def parse_date_regex(date_string: str) -> str:
"""
:return:
"""
date = re.split('(\d{4}-\d{2}-\d{2})', date_string)
return [res for res in date if len(res) == 10][0]
在Python 3.5中,您的UTC偏移量不能包含冒号。
UTC偏移量,格式为+ HHMM或-HHMM(如果对象是幼稚的,则为空字符串。)>
在Python 3.7中更改为允许冒号。