Python time mktime() 方法



Python time mktime() 方法将本地时间的对象形式转换为秒。此方法是 localtime() 的逆函数,并接受 struct_time 对象或完整的 9 元组作为其参数。为了与 time() 保持兼容性,它返回一个浮点数。

如果输入值不能表示为有效时间,则会引发 OverflowErrorValueError

语法

以下是 Python mktime() 方法的语法:

time.mktime(t)

参数

  • t − 这是 struct_time 或完整的 9 元组。

返回值

此方法返回一个浮点数,为了与 time() 保持兼容性。

示例

以下示例显示了 Python time mktime() 方法的使用方法。在这里,我们将一个普通的 9 元组作为参数传递给此方法。

import time

t = (2009, 2, 17, 17, 3, 38, 1, 48, 0)
secs = time.mktime(t)
print("Time in seconds:",  secs)
print("Time represented as a string:", time.asctime(time.localtime(secs)))

当我们运行上面的程序时,它会产生以下结果:

Time in seconds: 1234870418.0
Time represented as a string: Tue Feb 17 17:03:38 2009

示例

现在让我们尝试将一个 "struct_time" 对象作为参数传递给此方法。

我们使用 time.struct_time() 方法将 9 元组转换为 "time_struct" 对象。然后,将此对象作为参数传递给 mktime() 方法,使用该方法我们检索以秒为单位的本地时间。

import time

t = (2009, 2, 17, 17, 3, 38, 1, 48, 0)
time_struct = time.struct_time(t)
secs = time.mktime(time_struct)
print("Time in seconds:",  secs)
print("Time represented as a string:", time.asctime(time.localtime(secs)))

如果我们编译并运行上面的程序,则输出显示如下:

Time in seconds: 1234870418.0
Time represented as a string: Tue Feb 17 17:03:38 2009

示例

如果我们根据 UTC 时间传递参数,则该方法会提供错误的时间戳作为返回值。

从 gmtime() 方法获得的对象形式的当前时间作为参数传递给 mktime() 方法。然后,将作为 mktime() 方法返回值获得的浮点值作为参数传递给 gmtime() 方法。gmtime() 方法的两个返回值都不同。

import time

t = time.gmtime()
print("Time as object:", t)
secs = time.mktime(t)
print("Time in seconds:",  secs)

obj = time.gmtime(secs)
print("Time as object:",  obj)

上面程序的输出显示如下:

Time as object: time.struct_time(tm_year=2023, tm_mon=1, tm_mday=10, tm_hour=6, tm_min=31, tm_sec=33, tm_wday=1, tm_yday=10, tm_isdst=0)
Time in seconds: 1673312493.0
Time as object: time.struct_time(tm_year=2023, tm_mon=1, tm_mday=10, tm_hour=1, tm_min=1, tm_sec=33, tm_wday=1, tm_yday=10, tm_isdst=0)

示例

如果作为参数传递的值不是有效的时间组件,则该方法会引发 OverflowError。

import time

t = (202, 1, 10, 12, 6, 55, 1, 10, 0)
secs = time.mktime(t)
print("Time in seconds:",  secs)

上面程序的输出如下所示:

Traceback (most recent call last):
  File "d:\Alekhya\Programs\Python Time Programs\mktimedemo.py", line 4, in 
    secs = time.mktime(t)
OverflowError: mktime argument out of range

示例

如果作为参数传递的值超过了元组组件的限制,则该方法会引发 TypeError。

import time

t = (2023, 1, 10, 12, 6, 55, 1, 10, 0, 44)
secs = time.mktime(t)
print("Time in seconds:",  secs)

在执行上面的程序后,结果如下所示:

Traceback (most recent call last):
  File "d:\Tutorialspoint\Programs\Python Time Programs\mktimedemo.py", line 4, in 
    secs = time.mktime(t)
TypeError: mktime(): illegal time tuple argument
python_date_time.htm
广告