在python中优化datetime.date到unix时间戳的转换

在python中优化datetime.date到unix时间戳的转换,python,python-2.7,optimization,unix-timestamp,Python,Python 2.7,Optimization,Unix Timestamp,我一直在努力尽快做到这一点,同时也避免了时区问题 这种方法似乎是最慢的: def to_unix_timestamp(stamp): return int(stamp.strftime('%s')) 结果如下: ncalls tottime percall cumtime percall filename:lineno(function) 4328301 1.620 0.000 10.009 0.000 utils.py:13(to_unix_timest

我一直在努力尽快做到这一点,同时也避免了时区问题

这种方法似乎是最慢的:

def to_unix_timestamp(stamp):
    return int(stamp.strftime('%s'))
结果如下:

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
4328301    1.620    0.000   10.009    0.000 utils.py:13(to_unix_timestamp)
这似乎有点好,但对我来说还是比较慢:

def to_unix_timestamp(stamp):
    return time.mktime(stamp.timetuple())
结果:

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
4328301    1.381    0.000    8.158    0.000 utils.py:13(to_unix_timestamp)
有没有什么方法可以让我在不改变时区的情况下实现大幅加速?请注意,我仅限于python 2.7


定义
d0=datetime.date(1970,1,1)
,然后执行
(戳记-d0)。总秒数()…
-贾森哈珀

我遇到了我担心的“时区”问题。在对照其他方法进行验证后,我发现此方法产生的时间向前偏移了一个小时。你知道是什么引起的吗

是的,其他方法隐式使用本地时间,考虑您的时区。一个
datetime.date
对象
d0
(分辨率为1天)不包含该时区信息,因此在获取差异
戳记-d0
时存在差异。为了纠正这一点,我们可以构造一个代表真实纪元的
d0

d0 = datetime.datetime.fromtimestamp(0)

这样,
(datetime.datetime.combine(stamp,datetime.time.min)-d0)。total_seconds()
会产生您期望的值。

这些执行速度是否会以某种方式限制您?不要过早地优化项目基本完成,这是最大的性能瓶颈。为了改善用户体验,我想将其显著降低。定义
d0=datetime.date(1970,1,1)
,然后执行
(stamp-d0)。总秒数()
?实际上我还没有计时,也不知道你想要避免什么时区问题。好极了,你的想法把时间缩短到了1秒。然而,我遇到了我担心的“时区”问题。在对照其他方法进行验证后,我发现此方法产生的时间向前偏移了一个小时。知道是什么原因吗?夏令时?