Python datetime add
Question: I have a datetime value in string format. How can I change the format from a
"-" separated date to a "." separated date. I also need to add 6 hours to let
the data be in my time zone.

    
    
    s = '2013-08-11 09:48:49'
    from datetime import datetime,timedelta
    mytime = datetime.strptime(s,"%Y-%m-%d %H:%M:%S")
    time = mytime.strftime("%Y.%m.%d %H:%M:%S")
    dt = str(timedelta(minutes=6*60))  #6 hours
    time+=dt
    print time
    print dt
    

I get the following result where it adds the six hours at the end and not to
the nine:

    
    
    2013.08.11 09:48:496:00:00
    6:00:00
    


Answer: 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](http://pytz.sourceforge.net/):

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

