You are adding the string representation of the timedelta():
>>> from datetime import timedelta >>> print timedelta(minutes=6*60) 6:00:00
Sum datetime and timedelta objects, not their string representations; only create a string after summing the objects:
from datetime import datetime, timedelta s = '2013-08-11 09:48:49' mytime = datetime.strptime(s, "%Y-%m-%d %H:%M:%S") mytime += timedelta(hours=6) print mytime.strftime("%Y.%m.%d %H:%M:%S")
This results in:
>>> from datetime import datetime, timedelta >>> s = '2013-08-11 09:48:49' >>> mytime = datetime.strptime(s, "%Y-%m-%d %H:%M:%S") >>> mytime += timedelta(hours=6) >>> print mytime.strftime("%Y.%m.%d %H:%M:%S") 2013.08.11 15:48:49
However, you probably want to use real timezone objects instead, I recommend you use the pytz library:
>>> from pytz import timezone, utc >>> eastern = timezone('US/Eastern') >>> utctime = utc.localize(datetime.strptime(s, "%Y-%m-%d %H:%M:%S")) >>> local_tz = utctime.astimezone(eastern) >>> print mytime.strftime("%Y.%m.%d %H:%M:%S") 2013.08.11 15:48:49
This will take into account daylight saving time too, for example.