我有一个unicode字符串u'May 12, 2014 8:00:40 PM'
,我想将它转换为日期时间对象,但我不想要时间戳,只有日期。
输出应为2014/5/12
或2014/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
答案 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)