10
votes

I try to remove seconds from date:

>>> import datetime
>>> test1 = datetime.datetime(2011, 6, 10, 0, 0)
>>> test1
datetime.datetime(2011, 6, 10, 0, 0)
>>> str(test1)
'2011-06-10 00:00:00'
>>> str(test1).rstrip('00:00:00')
'2011-06-10 '
>>> str(test1).rstrip(' 00:00:00')
'2011-06-1'

Why 0 at end of '10' is removed?

2

2 Answers

11
votes

str.rstrip() doesn't remove an exact string -- it removes all characters that occur in the string. Since you know the length of the string to remove, you can simply use

str(test1)[:-9]

or even better

test1.date().isoformat()
7
votes

rstrip takes a set (although the argument can be any iterable, like str in your example) of characters that are removed, not a single string.

And by the way, the string representation of datetime.datetime is not fixed, you can't rely on it. Instead, use isoformat on the date or strftime:

>>> import datetime
>>> test1 = datetime.datetime(2011, 6, 10, 0, 0)
>>> test1.date().isoformat()
'2011-06-10'
>>> test1.strftime('%Y-%m-%d')
'2011-06-10'