关于将完整字符串类型时间转换为日期时间类型-python

convert a full string type time into datetime type - Python

本问题已经有最佳答案,请猛点这里访问。

我有一个unicode字符串u'May 12, 2014 8:00:40 PM',我想把它转换成日期时间对象,但我不需要时间戳,只需要日期。

输出应为2014/5/122014/05/12

我试着用strptime,但没用。可能是我错过了什么?

1
2
3
4
5
6
7
8
/usr/lib/python2.7/_strptime.pyc in _strptime(data_string, format)
    326     if len(data_string) != found.end():
    327         raise ValueError("unconverted data remains: %s" %
--> 328                           data_string[found.end():])
    329
    330     year = None

ValueError: unconverted data remains:   1:33PM

我已经看过这些线了

将字符串转换为日期时间

将字符串转换为日期类型python

在python上将字符串转换为日期类型


datetime.datetime.strptime()需要解析所有的输入字符串。如果传入u'May 12, 2014 8:00:40 PM',则需要说明所有字符。

或者分离时间部分,或者也解析时间部分,然后通过在生成的datetime.datetime()对象上调用.date()来忽略该部分。

更容易包括时间:

1
dateobj = datetime.datetime.strptime(inputstring, '%B %d, %Y %I:%M:%S %p').date()

这就为字符串的日期部分提供了一个datetime.date()对象。

时间部分的切割可通过str.rsplit()调用完成,限制为2个拆分:

1
dateobj = datetime.datetime.strptime(inputstring.rsplit(None, 2)[0], '%B %d, %Y').date()

我在这里也打过电话给.date()

演示:

1
2
3
4
5
6
>>> import datetime
>>> inputstring = u'May 12, 2014 8:00:40 PM'
>>> datetime.datetime.strptime(inputstring, '%B %d, %Y %I:%M:%S %p').date()
datetime.date(2014, 5, 12)
>>> datetime.datetime.strptime(inputstring.rsplit(None, 2)[0], '%B %d, %Y').date()
datetime.date(2014, 5, 12)