数据集将12:00 AM识别为00:00 AM

时间:2016-05-08 09:06:26

标签: python python-3.x datetime

我从Python收到以下错误:

ValueError: time data '05/10/2015 00:19:49 AM' does not match format '%d/%m/%Y %I:%M:%S %p'

我认为原因是数据集与datetime库识别12午夜时间的方式略有不一致。我认为可能需要通过将00更改为12来纠正。

例如,以下数据显示如下:

05/10/2015 12:59:12 PM

数据未使用24小时制。有没有人有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

简单try - except怎么样,首先尝试%I,如果获得%H则使用ValueError

date_string = '05/10/2015 00:19:49 AM'
try:
    date = time.strptime(date_string, '%d/%m/%Y %I:%M:%S %p')
except ValueError:
    date = time.strptime(date_string, '%d/%m/%Y %H:%M:%S %p')

print(time.strftime('%d/%m/%Y %H:%M:%S %p', date))

输出:

05/10/2015 00:19:49 AM

%I应适用于12小时格式的所有日期,但小时为00的日期除外。对于这些情况,使用%H的24小时格式应该可以正常工作。

datetime

一样
import datetime

date_string = '05/10/2015 00:19:49 AM'
try:
    date = datetime.datetime.strptime(date_string, '%d/%m/%Y %I:%M:%S %p')
except ValueError:
    date = datetime.datetime.strptime(date_string, '%d/%m/%Y %H:%M:%S %p')

print(date.strftime('%d/%m/%Y %H:%M:%S %p'))

输出:

05/10/2015 00:19:49 AM