将完整的字符串类型时间转换为datetime类型 - Python

时间:2014-05-20 10:51:50

标签: python python-2.7 datetime python-datetime

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

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

我试图使用strptime,但它没有帮助我。可能是我错过了别的什么?

/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

我已经看过这些帖子了

Converting string into datetime

convert string to date type python

Convert string into Date type on Python

1 个答案:

答案 0 :(得分:1)

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

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

更容易包括时间:

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

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

可以通过str.rsplit()调用切断时间部分,限制为2次分割:

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

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

演示:

>>> 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)