我的时间戳是2010-07-26 23:35:03
我真正想做的是从那时起减去15分钟。
我的方法是简单转换为unix时间,减去秒数并转换回来。简单吧?
我的问题是python使用我的本地时区调整返回的unix时间,目前是东部夏令时,我认为是GMT -4。
所以当我这样做时:
# packet[20] holds the time stamp
unix_time_value = (mktime(packet[20].timetuple()))
我得到1280201703,这是星期二,2010年7月27日03:35:03。我可以这样做:
unix_time_value = (mktime(packet[20].timetuple())) - (4 * 3600)
但现在我必须检查东部标准时间-5 GMT并将(4 * 3600)调整为(5 * 3600)。有没有办法告诉python不使用我的本地时区,只是转换时间戳或者有一个简单的方法来获取数据包[20]并减去15分钟?
答案 0 :(得分:6)
减去datetime.timedelta(seconds=15*60)
。
答案 1 :(得分:6)
online docs有一个方便的表(你称之为“unix time”更恰当地称为“UTC”,对于“Universal Time Coordinate”,“自纪元以来的秒数”是一个“时间戳”作为浮...):
使用以下功能进行转换 在时间表示之间:
From To Use
seconds since the epoch struct_time in UTC gmtime()
seconds since the epoch struct_time in local time localtime()
struct_time in UTC seconds since the epoch calendar.timegm()
struct_time in local time seconds since the epoch mktime()
其中非限定函数名称来自time
模块(因为那是文档的位置;-)。所以,既然您显然以struct_time in UTC
开头,请使用calendar.timegm()
来获取时间戳(AKA“自纪元以来的秒数”),减去15 * 60 = 900
(因为度量单位是秒),并将生成的“自纪元以来的秒数”放回struct_time in UTC
time.gmtime
。或者,如果您希望在当地时间工作,请使用time.mktime
和time.localtime
(但如果15分钟可以跨越切换到DST或返回的时刻,则可能会出现问题 - 始终使用UTC是很多发声器。)
当然,要使用calendar.timegm
,您的代码中需要import calendar
(导入通常最好放在脚本或模块的顶部)。
答案 2 :(得分:1)
向下滚动并阅读从日期中减去的内容:http://pleac.sourceforge.net/pleac_python/datesandtimes.html