我有一个字符串格式的日期时间值。如何将格式从“ - ”分隔日期更改为“。”。分开的日期。我还需要增加6个小时才能让数据进入我的时区。
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
我得到了以下结果:它最后增加了六个小时,而不是九个小时:
2013.08.11 09:48:496:00:00
6:00:00
答案 0 :(得分:27)
您正在添加timedelta()
的字符串表示:
>>> from datetime import timedelta
>>> print timedelta(minutes=6*60)
6:00:00
求和datetime
和timedelta
个对象,而不是它们的字符串表示形式;只有在总结对象后才能创建一个字符串:
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")
这导致:
>>> 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
但是,您可能希望使用实时区域对象,我建议您使用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
例如,这也将考虑夏令时。