用Python创建一个未来五分钟的unix时间戳

305 投票
12 回答
277957 浏览
提问于 2025-04-15 22:24

我需要创建一个“过期”值,这个值要在未来5分钟,但我必须用UNIX时间戳格式来表示。目前我有了一些代码,但感觉有点像是绕道而行。

def expires():
    '''return a UNIX style timestamp representing 5 minutes from now'''
    epoch = datetime.datetime(1970, 1, 1)
    seconds_in_a_day = 60 * 60 * 24
    five_minutes = datetime.timedelta(seconds=5*60)
    five_minutes_from_now = datetime.datetime.now() + five_minutes
    since_epoch = five_minutes_from_now - epoch
    return since_epoch.days * seconds_in_a_day + since_epoch.seconds

有没有什么模块或者函数可以帮我直接转换成时间戳呢?

12 个回答

165

在Python 3.3及以上版本中,你只需要调用timestamp()方法就可以得到一个浮点数形式的时间戳。

import datetime
current_time = datetime.datetime.now(datetime.timezone.utc)
unix_timestamp = current_time.timestamp() # works if Python >= 3.3

unix_timestamp_plus_5_min = unix_timestamp + (5 * 60)  # 5 min * 60 seconds
355

另一种方法是使用 calendar.timegm

future = datetime.datetime.utcnow() + datetime.timedelta(minutes=5)
return calendar.timegm(future.timetuple())

这个方法比 strftime 中的 %s 标志更通用,因为 %s 在Windows上不能用。

146

我刚发现这个,而且它甚至更简洁。

import time
def expires():
    '''return a UNIX style timestamp representing 5 minutes from now'''
    return int(time.time()+300)

撰写回答