1

我有一个 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

我已经看过这些线程

将字符串转换为日期时间

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

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

4

1 回答 1

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)
于 2014-05-20T10:56:53.780 回答