您的位置:

Python datetime模块中mktime()函数的用法

一、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模块中常用的函数之一,可以方便地将时间元组转化为时间戳,可以应用于多种场景中,需要注意时区和日期的范围。