如何创建时区/ DST准确日期时间加上Unix纪元数?

时间:2016-10-01 23:35:46

标签: python

对于数据库项目,我想要一个双字段表,其中包含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秒?那最终会意外地咬我吗?有更优雅的方式吗?

0 个答案:

没有答案