📜  Python时间模块

📅  最后修改于: 2022-05-13 01:54:32.544000             🧑  作者: Mango

Python时间模块

在本文中,我们将借助好的示例来讨论时间模块和该模块提供的各种功能。

顾名思义, Python时间模块允许在Python中使用时间。它允许诸如获取当前时间、暂停程序执行等功能。因此,在开始使用此模块之前,我们需要导入它。

导入时间模块

time 模块带有 Python 的标准实用程序模块,因此无需外部安装。我们可以使用 import 语句简单地导入它。

import time

什么是时代?

纪元是时间开始的点并且取决于平台。在 Windows 和大多数 Unix 系统上,纪元是 1970 年 1 月 1 日 00:00:00 (UTC),并且闰秒不计入纪元以来的秒数。要检查给定平台上的纪元,我们可以使用 time.gmtime(0)。

示例:获取纪元

Python3
import time
 
print(time.gmtime(0))


Python3
import time
 
 
curr = time.time()
print("Current time in seconds since epoch =", curr)


Python3
import time
 
# getting current time by passing
# the number of seconds since epoch
curr = time.ctime(1627908313.717886)
print("Current time:", curr)


Python3
import time
 
for i in range(4):
     
    # using sleep() to hault execution
    time.sleep(1)
    print(i)


Python3
# importing time module
import time
 
# Convert the current time in seconds
# since the epoch to a
# time.struct_time object in Local time
obj = time.localtime(1627987508.6496193)
 
print(obj)


Python3
# importing time module
import time
 
obj1 = time.gmtime(1627987508.6496193)
 
# Convert the time.struct_time
# object to local time expressed in
# seconds since the epoch
# using time.mktime() method
time_sec = time.mktime(obj1)
 
# Print the local time in seconds
print("Local time (in seconds):", time_sec)


Python3
# importing time module
import time
 
# Convert the current time in seconds
# since the epoch to a
# time.struct_time object in UTC
obj = time.gmtime(1627987508.6496193)
 
# Print the time.struct.time object
print(obj)


Python3
from time import gmtime, strftime
 
# using simple format of showing time
s = strftime("%a, %d %b %Y %H:%M:%S",
             gmtime(1627987508.6496193))
print(s)


Python3
# importing time module
import time
 
 
obj = time.gmtime(1627987508.6496193)
 
# Convert the time.struct_time
# object to a string of the
# form 'Day Mon Date Hour:Min:Sec Year'
# using time.asctime() method
time_str = time.asctime(obj)
print(time_str)
 
 
obj = time.localtime(1627987508.6496193)
 
# Convert the time.struct_time
# object to a string of the
# form 'Day Mon Date Hour:Min:Sec Year'
# using time.asctime() method
time_str = time.asctime(obj)
print(time_str)


Python3
import time
 
string = "Tue, 03 Aug 2021 10:45:08"
obj = time.strptime(string, "%a, %d %b %Y %H:%M:%S")
 
print(obj)


输出:

从上面的示例中,您可以看到纪元是 1970 年 1 月 1 日。这意味着 1970 年 1 月 2 日可以表示为纪元以来的 86400 秒,因为一天有 86400 秒。

注意:纪元之前的时间仍然可以用秒表示,但它会是负数。例如,1969 年 12 月 31 日将表示为 -86400 秒。

自纪元以来以秒为单位获取当前时间

time.time() 方法返回自纪元以来的当前时间(以秒为单位)。它返回一个浮点数。

示例:自纪元以来的当前时间(以秒为单位)

Python3

import time
 
 
curr = time.time()
print("Current time in seconds since epoch =", curr)
输出
Current time in seconds since epoch = 1627908387.764925

从秒中获取时间字符串

time.ctime()函数返回一个 24 个字符的时间字符串,但以秒为参数并计算时间,直到提到的秒数。如果没有传递参数,则计算到现在为止的时间。

示例:从秒获取时间字符串

Python3

import time
 
# getting current time by passing
# the number of seconds since epoch
curr = time.ctime(1627908313.717886)
print("Current time:", curr)
输出
Current time: Mon Aug  2 12:45:13 2021

延迟执行程序

可以使用 time.sleep() 方法延迟执行。此方法用于在参数中指定的时间内停止程序执行。

示例:延迟Python中程序的执行时间。

Python3

import time
 
for i in range(4):
     
    # using sleep() to hault execution
    time.sleep(1)
    print(i)
输出
0
1
2
3

time.struct_time 类

Struct_time 类有助于访问本地时间,即非纪元时间戳。它返回一个命名元组,其值可以通过索引和属性名称访问。它的对象包含以下属性——

Index Attribute Name Values
0tm_year0000, …, 9999
1tm_mon1, 2, …, 11, 12
2tm_mday1, 2, …, 30, 31
3tm_hour0, 1, …, 22, 23
4tm_min0, 1, …, 58, 59
5tm_sec0, 1, …, 60, 61
6tm_wday0, 1, …, 6; Sunday is 6
7tm_yday1, 2, …, 365, 366
8tm_isdst0, 1 or -1

此类包含各种功能。让我们详细讨论每个函数。

time.localtime() 方法

localtime() 方法以本地时间返回 struct_time 对象。它将自纪元以来经过的秒数作为参数。如果未给出 seconds 参数,则使用 time.time() 方法返回的当前时间。

示例:从纪元获取本地时间

Python3

# importing time module
import time
 
# Convert the current time in seconds
# since the epoch to a
# time.struct_time object in Local time
obj = time.localtime(1627987508.6496193)
 
print(obj)

输出

time.mktime() 方法

time.mktime() 是 time.localtime() 的反函数,它将自纪元以来以秒表示的时间转换为本地时间的 time.struct_time 对象。

示例:将 struct_time 对象转换为自纪元以来的秒数

Python3

# importing time module
import time
 
obj1 = time.gmtime(1627987508.6496193)
 
# Convert the time.struct_time
# object to local time expressed in
# seconds since the epoch
# using time.mktime() method
time_sec = time.mktime(obj1)
 
# Print the local time in seconds
print("Local time (in seconds):", time_sec)
输出
Local time (in seconds): 1627987508.0

time.gmtime() 方法

time.gmtime() 用于将自纪元以来以秒表示的时间转换为 UTC 中的 time.struct_time 对象,其中 tm_isdst 属性始终为 0。如果未给出 seconds 参数,则 time.time( ) 方法被使用。

示例:使用 time.gmtime() 方法

Python3

# importing time module
import time
 
# Convert the current time in seconds
# since the epoch to a
# time.struct_time object in UTC
obj = time.gmtime(1627987508.6496193)
 
# Print the time.struct.time object
print(obj)

输出

time.strftime() 方法

time.strftime()函数将表示由 gmtime() 或 localtime() 返回的时间的元组或 struct_time 转换为格式参数指定的字符串。如果未提供 t,则使用 localtime() 返回的当前时间。格式必须是字符串。如果 t 中的任何字段超出允许范围,则会引发 ValueError。

示例:使用 strftime() 方法将 struct_time 对象转换为字符串

Python3

from time import gmtime, strftime
 
# using simple format of showing time
s = strftime("%a, %d %b %Y %H:%M:%S",
             gmtime(1627987508.6496193))
print(s)
输出
Tue, 03 Aug 2021 10:45:08

time.asctime() 方法

time.asctime() 方法用于将表示 time.gmtime() 或 time.localtime() 方法返回的时间的元组或 time.struct_time 对象转换为以下形式的字符串:

Day Mon Date Hour:Min:Sec Year

示例:将元组转换为 time.struct_time 对象为字符串

Python3

# importing time module
import time
 
 
obj = time.gmtime(1627987508.6496193)
 
# Convert the time.struct_time
# object to a string of the
# form 'Day Mon Date Hour:Min:Sec Year'
# using time.asctime() method
time_str = time.asctime(obj)
print(time_str)
 
 
obj = time.localtime(1627987508.6496193)
 
# Convert the time.struct_time
# object to a string of the
# form 'Day Mon Date Hour:Min:Sec Year'
# using time.asctime() method
time_str = time.asctime(obj)
print(time_str)
输出
Tue Aug  3 10:45:08 2021
Tue Aug  3 10:45:08 2021

time.strptime() 方法

time.strptime() 方法将表示时间的字符串转换为 struct_time 对象。

示例:将字符串转换为 struct_time 对象。

Python3

import time
 
string = "Tue, 03 Aug 2021 10:45:08"
obj = time.strptime(string, "%a, %d %b %Y %H:%M:%S")
 
print(obj)

输出