日期格式转换在Windows上有效,但在Linux中给出错误

问题描述 投票:0回答:2

我正在尝试将日期格式化为特定格式。该代码已在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'

python python-3.5
2个回答
0
投票

我最终使用正则表达式解决了问题,并且可以解决问题。

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]

0
投票

在Python 3.5中,您的UTC偏移量不能包含冒号。

UTC偏移量,格式为+ HHMM或-HHMM(如果对象是幼稚的,则为空字符串。)>

在Python 3.7中更改为允许冒号。

© www.soinside.com 2019 - 2024. All rights reserved.