使用 python 转换日期时出现问题

issue in conversion of date using python

我在 python 处理日期方面还很陌生。我有两种类型的日期(因为动态进入数组)。像这样 ['2022-02-17 08:29:36.345374' , '2021-03-18 08:29:36']

我正在尝试以这种格式获取这些 17/02/2022 08:29 PM.

直到现在尝试这样的事情:

def update_date(datetime):
    date_formating = datetime.strptime(date_time, '%m/%d/%Y %I:%M %p')
    return date_formating

但出现如下错误:

ValueError: time data '2022-02-17 08:29:36.345374' does not match format '%m/%d/%Y %I:%M %p'

我需要一个可以将我正在使用的两种格式转换为所需格式的解决方案。任何帮助将不胜感激。

尝试使用 datetime.<b>fromisoformat</b>(<i>date_string</i>) 进行列表推导:

>>> from datetime import datetime
>>> date_strs = ['2022-02-17 08:29:36.345374', '2021-03-18 08:29:36']
>>> [datetime.fromisoformat(s).strftime('%d/%m/%Y %I:%M %p') for s in date_strs]
['17/02/2022 08:29 AM', '18/03/2021 08:29 AM']

给定列表中的时间有两种不同的格式

  1. 以微秒计
  2. 有秒(没有微秒)

这段代码突出了差异并且可以工作:

import datetime as dt

t = ['2022-02-17 08:29:36.345374' , '2021-03-18 08:29:36']

# format with microseconds
d1 = dt.datetime.strptime(t[0], '%Y-%m-%d %H:%M:%S.%f')

# format with seconds
d2 = dt.datetime.strptime(t[1], '%Y-%m-%d %H:%M:%S')

# format user wants
x = d1.strftime('%m/%d/%Y %I:%M %p')
y = d2.strftime('%m/%d/%Y %I:%M %p')
print(x)
print(y)

结果:

02/17/2022 08:29 AM
03/18/2021 08:29 AM