【问题标题】:Parsing string to datetime with drop milliseconds以毫秒为单位将字符串解析为日期时间
【发布时间】:2021-02-17 18:46:50
【问题描述】:

我需要用python将一个字符串解析成datetime,例如:

datetime.datetime.strptime('2018-06-29 08:15:27.243860', '%Y-%m-%d %H:%M:%S.%f')

但有时我不知道输入是2018-06-29 08:15:27.243860 还是2018-06-29 08:15:27(没有毫秒)。

如果我尝试过

datetime.datetime.strptime('2018-06-29 08:15:27', '%Y-%m-%d %H:%M:%S.%f')

我遇到了一个异常

ValueError: time data '2018-06-29 08:15:27' does not match format '%Y-%m-%d %H:%M:%S.%f'

有没有办法使用与'2018-06-29 08:15:27.243860' and '2018-06-29 08:15:27'相同的格式?

我不关心毫秒,我想丢弃它们。

【问题讨论】:

  • 既然任何匹配你的模式的输入输出都有一个固定的长度,为什么不直接删除任何过多的输入呢?例如datetime.datetime.strptime('2018-06-29 08:15:27.243860'[:19], '%Y-%m-%d %H:%M:%S').

标签: python datetime datetime-format


【解决方案1】:

使用datetime.fromisoformat 并将微秒替换为零:


s = ('2018-06-29 08:15:27.243860', '2018-06-29 08:15:27')

for t in s:
    print(datetime.fromisoformat(t).replace(microsecond=0))
2018-06-29 08:15:27
2018-06-29 08:15:27

我是efficient as well

【讨论】:

    猜你喜欢
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 2021-09-13
    相关资源
    最近更新 更多