对于数据库项目,我想要一个双字段表,其中包含Unix纪元时间戳的整数部分以及相应的人类可读日期和时间。 (我只需要5分钟的增量,我想要一个整数,所以我忽略了epochal float的小数部分。)
作为一个Python新手,我不确定我的方法的可靠性:我的方法目前是使用时间元组,其中包括时区信息。但是时间元组似乎不允许加法和减法,而datetime对象则允许。所以我匆匆忙忙地进行了一些转换。我的第一次尝试:
; AX need to be 15, using ONLY 'mov' and 'lea'.
; Do NOT use arithmetic instrutions (add, inc, mul, etc.)
mov ax,10
mov bx,4
lea cx,ax
lea cx, [cx+bx]
这样可以正确地遍历我的时区的DST时间变化。
只是递增Unix纪元秒似乎更简单:
import datetime
import time
sp = '%m/%d/%Y %H:%M'
otime = datetime.datetime(2010, 3, 14, 0, 0, 0, 0)
itime = int(round(time.mktime(otime.timetuple())))
for x in range(0, 50):
print(str(itime)+ ", " + str(time.strftime(sp, otime.timetuple())))
otime = otime + datetime.timedelta(seconds=300)
ttime = time.localtime(time.mktime(otime.timetuple()))
otime = datetime.datetime.fromtimestamp(time.mktime(ttime))
itime = int(round(time.mktime(ttime)))
两种方法似乎都在我检查的范围内提供相同的输出,例如2010年的DST时间变化:
import datetime
import time
sp = '%m/%d/%Y %H:%M'
otime = datetime.datetime(2010, 3, 14, 0, 0, 0, 0)
itime = int(round(time.mktime(otime.timetuple())))
for x in range(0, 50):
print(str(itime)+ ", " + str(time.strftime(sp, otime.timetuple())))
itime = itime + 300
otime = datetime.datetime.fromtimestamp(float(itime))
我的问题:是否有理由使用datetime.timedelta()而不是简单地将Unix纪元整数增加300秒?那最终会意外地咬我吗?有更优雅的方式吗?