一、mktime()函数介绍
Python datetime模块中的mktime()函数可以将一个时间元组转化为时间戳。
时间元组是一个由9个整数组成的序列,其中每个整数表示时间的一部分,从年到日,以及0到6的一个整数表示周日到周六的一天。
时间戳是自1970年1月1日00:00:00 UTC以来的秒数,如果time_tuple为None,则返回当前时间的时间戳。
import datetime t = (2021, 12, 1, 12, 30, 45, 0, 0, 0) timestamp = datetime.datetime(*t).timestamp() print("timestamp:", timestamp)
以上代码的输出结果: timestamp: 1638364245.0
二、mktime()函数的应用场景
将时间元组转化为时间戳可以方便地进行时间的比较、计算和操作。例如:
import datetime t1 = (2021, 12, 1, 12, 30, 45, 0, 0, 0) t2 = (2021, 12, 1, 14, 20, 15, 0, 0, 0) dt1 = datetime.datetime(*t1) dt2 = datetime.datetime(*t2) if dt1.timestamp() < dt2.timestamp(): print(dt1, "is before", dt2) else: print(dt1, "is after", dt2)
以上代码的输出结果: (2021, 12, 1, 12, 30, 45) is before (2021, 12, 1, 14, 20, 15)
三、mktime()函数的注意事项
需要注意的是,mktime()默认使用本地时区,如果想以UTC时间为准,可以使用utctimetuple()函数获取UTC时间元组。
此外,mktime()不支持日期在1900年1月1日之前,也不支持日期在2038年1月19日之后。
import datetime import time t = (2022, 1, 1, 0, 0, 0, 0, 0, 0) if time.mktime(t) > 0: dt = datetime.datetime(*t) print("datetime:", dt) else: print("Invalid date")
以上代码的输出结果: datetime: 2022-01-01 00:00:00
四、总结
mktime()函数是Python datetime模块中常用的函数之一,可以方便地将时间元组转化为时间戳,可以应用于多种场景中,需要注意时区和日期的范围。