如何从字符串格式时间戳中提取日期?

时间:2019-06-02 18:29:09

标签: python

我想从字符串(例如2018-07-16)中提取日期(例如2018-07-16 10:17:53.460035)。

字符串有两种格式:"2018-07-16 10:17:53.460035""2018-05-20 14:37:21"

当我在提取日期之前使用strptime(d, "%Y-%m-%d %H:%M:%S.%f")转换字符串时,会弹出此错误:

ValueError: time data '2018-05-20 14:37:21' does not match format
%Y-%m-%d %H:%M:%S.%f'

如何将两种时间格式都转换为DateTime类型并从中提取日期?

2 个答案:

答案 0 :(得分:1)

使用来自熊猫的to_datetime

import pandas as pd
a = "2018-07-16 10:17:53.460035"
b = "2018-05-20 14:37:21"
print(pd.to_datetime(a).date())
print(pd.to_datetime(b).date())

答案 1 :(得分:0)

第一种格式的末尾不需要.%f,这就是导致格式错误的原因。

t = "2018-05-20 14:37:21"

strptime(t, "%Y-%m-%d %H:%M:%S")

您需要为其他时间字符串创建另一种格式:

t = "2018-07-16 10:17:53.460035"

strptime(t, "%Y-%m-%d %H:%M:%S.%f")

编辑:这是另一个例子,除了两者

time_stamps = ["2018-05-20 14:37:21", "2018-07-16 10:17:53.460035"]

for stamp in time_stamps:

    fmt = "%Y-%m-%d %H:%M:%S"

    try:

        time = datetime.datetime.strptime(stamp, fmt+".%f")

    except ValueError:

        time = datetime.datetime.strptime(stamp, fmt)

        print(time)