用Python创建一个未来五分钟的unix时间戳
我需要创建一个“过期”值,这个值要在未来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)