1. python的time模块介绍

time模块是Python内置的处理日期和时间的模块,它提供了一些函数来处理时间和日期,包括获取当前时间、时间格式化、计算时间差等等。

  • 1.1. 时间获取和时间戳操作

time模块提供了time()函数来获取当前时间,也提供了几个对时间戳进行操作的函数,比如mktime()、gmtime()等。

  • 1.2. 时间格式化

time模块通过strftime()函数可以根据指定的格式将时间格式化为字符串,常用的格式化字符有%d、%m、%Y、%H、%M、%S等。

  • 1.3. 时间转换

time模块提供了strptime()函数,可以将时间字符串按照指定的格式转换为时间元组;还有asctime()、ctime()等函数,将时间元组转换为可读的时间格式。

  • 1.4 睡眠

time模块提供了sleep()函数来实现线程的暂停,可以用于实现一些定时操作

  • 1.5 时间操作

time模块提供了一些函数来进行时间操作,如clock()函数可以返回指定操作的CPU时间;还有一些计时器的简单实现,如perf_counter()、timeit()等

2. python 关于时间获取和时间戳的操作

2.1 time.time() 获取当前时间的时间戳

time() 函数用于获取当前时间的时间戳,即从 "1970 年 1 月 1 日 00:00:00" UTC 到当前时间的秒数。

import time

timestamp = time.time()
print(f"当前时间戳是:{timestamp}")
输出:
当前时间戳是:1679160892.8581994

2.2 time.localtime() 将当前时间转换为本地时间(返回时间元组)

localtime() 函数用于将当前时间转换为本地时间。它返回一个包含当前日期和时间的 struct_time 对象。

import time

local_time = time.localtime()
print(f"当前本地时间是:{local_time}")
输出:
当前本地时间是:time.struct_time(tm_year=2023, tm_mon=3, tm_mday=19, tm_hour=1, tm_min=35, tm_sec=13, tm_wday=6, tm_yday=78, tm_isdst=0)

2.3 time.gmtime()将当前时间转换为 UTC 时间(返回时间元组)

gmtime() 函数与 localtime() 函数的作用类似,但将当前时间转换为 UTC 时间。它同样返回一个包含当前日期和时间的 struct_time 对象。

import time

utc_time = time.gmtime()
print(f"当前UTC时间是:{utc_time}")
输出:
当前UTC时间是:time.struct_time(tm_year=2023, tm_mon=3, tm_mday=18, tm_hour=17, tm_min=35, tm_sec=42, tm_wday=5, tm_yday=77, tm_isdst=0)

2.4 time.mktime()将一个时间元组转换为时间戳

mktime() 函数用于将一个时间元组转换为时间戳。这个时间元组必须是由 localtime()gmtime()strptime() 函数返回的。

import time

local_time = time.localtime()
timestamp = time.mktime(local_time)
print(f"本地时间:{local_time},时间戳:{timestamp}")
输出:
本地时间:time.struct_time(tm_year=2023, tm_mon=3, tm_mday=19, tm_hour=1, tm_min=36, tm_sec=2, tm_wday=6, tm_yday=78, tm_isdst=0),时间戳:1679160962.0

2.5 time.asctime(local_time)将时间元组转换为可读性的时间字符串

asctime() 函数用于将时间元组转换为可读性的时间字符串,格式为 "Mon Sep 30 07:06:05 2019"。参数是一个表示时间的元组,如由 localtime() 或者 gmtime() 函数返回的对象

import time

local_time = time.localtime()
time_string = time.asctime(local_time)
print(f"当前时间字符串是:{time_string}")
输出:
当前时间字符串是:Sun Mar 19 01:32:05 2023

2.6 time.ctime(timestamp)将时间戳转换为可读性的时间字符串

ctime() 函数用于将时间戳转换为可读性的时间字符串,格式与 asctime() 相同。如果不传参数,则默认输出当前时间字符串。

import time

timestamp = time.time()
time_string = time.ctime(timestamp)
print(f"当前时间字符串是:{time_string}")
输出:
当前时间字符串是:Sun Mar 19 01:34:17 2023

3. python 关于时间格式化的操作

时间格式化是指将日期或时间按照指定的格式进行输出或显示。Python中时间模块提供了多个用于时间格式化的函数,下面介绍一些常用的函数及其使用方法

3.1 time.strftime 将时间对象转换为指定格式的字符串

strftime() 函数用于将时间对象转换为指定格式的字符串。其中,日期和时间格式化字符串的占位符和含义如下:

格式符

含义

%Y


%m


%d


%H


%M


%S


%a

星期的简称

%A

星期的全称

%b

月份的简称

%B

月份的全称

%c

日期和时间

%x

日期(不含时间)

%X

时间(不含日期)

import time

local_time = time.localtime()
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
print(f"当前时间格式化字符串是:{formatted_time}")
输出:
当前时间格式化字符串是:2023-03-19 01:42:56

3.2 time.strptime 将符合格式的字符串转换为时间对象

strptime() 函数用于将符合格式的字符串转换为时间对象。它的第一个参数是需要转换的字符串,第二个参数是指定的日期和时间格式化字符串。

import time

time_string = "2022-01-04 15:30:00"
time_obj = time.strptime(time_string, "%Y-%m-%d %H:%M:%S")
print(f"转换后的时间对象为:{time_obj}")
输出:
转换后的时间对象为:time.struct_time(tm_year=2022, tm_mon=1, tm_mday=4, tm_hour=15, tm_min=30, tm_sec=0, tm_wday=1, tm_yday=4, tm_isdst=-1)

4 python 关于时间转换的操作

Python的time模块还提供了一些函数来进行时间转换,如将时间字符串按照指定的格式转换为时间元组,或将时间元组转换为可读的时间格式等。下面介绍一些比较常用的函数及其使用方法

4.1 time.strptime将时间字符串按照指定的格式转换为时间元组

strptime() 函数用于将时间字符串按照指定的格式转换为时间元组。它的第一个参数是需要转换的时间字符串,第二个参数是指定的日期和时间格式化字符串。

import time

time_str = "2022-01-05 14:30:00"
time_struct = time.strptime(time_str, "%Y-%m-%d %H:%M:%S")
print(f"转换后的时间元组是:{time_struct}")
输出:
转换后的时间元组是:time.struct_time(tm_year=2022, tm_mon=1, tm_mday=5, tm_hour=14, tm_min=30, tm_sec=0, tm_wday=2, tm_yday=5, tm_isdst=-1)

4.2 time.mktime接收时间元组,并将其转换为时间戳

mktime() 函数接收一个时间元组,并将其转换为时间戳。

import time

time_struct = time.strptime("2022-01-05 14:30:00", "%Y-%m-%d %H:%M:%S")
timestamp = time.mktime(time_struct)
print(f"时间戳是:{timestamp}")
输出:
时间戳是:1641364200.0

4.3 time.asctime接收时间元组,并返回一个可读的时间字符串

asctime() 函数接收一个时间元组,并返回一个可读的时间字符串,格式为"Www Mmm dd hh:mm:ss yyyy"。

import time

time_struct = time.strptime("2022-01-05 14:30:00", "%Y-%m-%d %H:%M:%S")
time_string = time.asctime(time_struct)
print(f"转换后的时间字符串是:{time_string}")
输出:
转换后的时间字符串是:Wed Jan  5 14:30:00 2022

4.4 time.ctime 接收一个时间戳,并返回对应的可读的时间字符串

ctime() 函数接收一个时间戳,并返回对应的可读的时间字符串。

import time

timestamp = time.time()
time_string = time.ctime(timestamp)
print(f"当前时间字符串是:{time_string}")
输出:
当前时间字符串是:Sun Mar 19 01:53:54 2023

4.5 time.strftime根据指定的格式将时间元组格式化为字符串

strftime() 函数可以根据指定的格式将时间元组格式化为字符串

import time

time_struct = time.strptime("2022-01-05 14:30:00", "%Y-%m-%d %H:%M:%S")
time_string = time.strftime("现在是 %Y 年 %m 月 %d 日 %H:%M:%S", time_struct)
print(f"转换后的时间字符串是:{time_string}")

5. python 关于睡眠的操作

Python中的time模块还提供了一些函数可以实现程序的等待或睡眠,以延迟指定的时间间隔来控制程序的执行速度或顺序。下面介绍一些比较常用的函数及其使用方法

5.1 time.sleep用于让程序暂停指定的时间

sleep() 函数用于让程序暂停指定的时间,单位为秒。

import time

print("开始执行程序")
time.sleep(3)
print("3秒后,程序继续执行")

5.2 time.perf_counter()

perf_counter() 函数可以返回当前系统的CPU时间,可以被用作基准时间。我们可以在某个程序处理完成之后重新计算一次CPU时间,来获得程序处理的实际时间。

import time

start_time = time.perf_counter()

# 执行某个操作,比如循环1亿次
for i in range(100000000):
    pass

end_time = time.perf_counter()

print(f"处理1亿次操作,用时{end_time - start_time}秒")
输出:
处理1亿次操作,用时5.3497827秒

5.3 time.process_time()

process_time() 函数返回当前进程执行 CPU 的时间总量,单位为秒。与 perf_counter() 不同的是,process_time() 不包括睡眠时间。

import time

start_time = time.process_time()

# 执行某个操作,比如循环1亿次
for i in range(100000000):
    pass

end_time = time.process_time()

print(f"处理1亿次操作,用时{end_time - start_time}秒")
输出:
处理1亿次操作,用时4.96875秒