time时间库
- 概述
- 获取当前时间
- time库
- datetime库
- 区别
- 时间元组处理
- 获取时间元组的各个部分
- 时间戳和时间元组的转换
- 格式化时间
- 格式化时间
- 解析时间
- 格式符号说明
- 暂停程序
- 计时操作
- 简单计时
- 高精度计时
- 计时器类的实现
- UTC时间操作
- time库
- datetime库
概述
time是Python标准库中的一个模块,用于处理时间相关的操作。它提供了各种函数来获取当前时间、格式化时间、进行时间的转换和计算等。
首先,需要导入 time
模块:
import time
获取当前时间
time库
-
时间戳:返回自1970年1月1日以来的秒数。
timestamp = time.time() print("当前时间戳:", timestamp)
-
本地时间:返回一个表示本地时间的结构化时间。
local_time = time.localtime() print("本地时间:", local_time)
-
格式化时间:将时间格式化为可读字符串。
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time) print("格式化时间:", formatted_time)
使用time库获取当前时间
import time# 获取当前时间戳
current_timestamp = time.time()
print("当前时间戳:", current_timestamp)# 将时间戳转换为本地时间
local_time = time.localtime(current_timestamp)# 格式化输出当前时间
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
print("当前本地时间:", formatted_time)
输出结果:
当前时间戳: 1729261034.7482784
当前本地时间: 2024-10-18 22:17:14
datetime库
datetime是一个与time类似的库。它库提供了更强大的时间和日期处理功能。
以下是使用datetime库获取当前时间的示例:
from datetime import datetime# 获取当前时间
current_datetime = datetime.now()
print("当前日期和时间:", current_datetime)# 格式化输出当前时间
formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M:%S")
print("格式化后的当前时间:", formatted_datetime)# 获取单独的日期和时间
current_date = current_datetime.date()
current_time = current_datetime.time()
print("当前日期:", current_date)
print("当前时间:", current_time)
当前日期和时间: 2024-10-18 22:17:55.574988
格式化后的当前时间: 2024-10-18 22:17:55
当前日期: 2024-10-18
当前时间: 22:17:55.574988
区别
time库:适合简单的时间获取和格式化操作。datetime库:提供了更多功能,如日期和时间的加减、比较等,适合更复杂的时间处理需求。
时间元组处理
时间元组包含年、月、日、小时、分钟、秒等信息,可以通过索引访问这些信息。
获取时间元组的各个部分
可以直接从时间元组中提取年、月、日、小时、分钟、秒等。
import time# 获取当前本地时间的时间元组
local_time_tuple = time.localtime()year = local_time_tuple.tm_year
month = local_time_tuple.tm_mon
day = local_time_tuple.tm_mday
hour = local_time_tuple.tm_hour
minute = local_time_tuple.tm_min
second = local_time_tuple.tm_secprint(f"当前时间: {year}-{month}-{day} {hour}:{minute}:{second}")
时间戳和时间元组的转换
使用time.mktime(t)
:将时间元组转换为时间戳(本地时间)。
import time# 创建一个时间元组
time_tuple = (2024, 10, 1, 12, 0, 0, 0, 0, -1) # 2024年10月1日 12:00:00# 转换为时间戳
timestamp = time.mktime(time_tuple)
print("时间戳:", timestamp)
使用time.asctime([t])
:将时间元组转换为可读的字符串格式。
import time# 获取当前时间的时间元组
current_time_tuple = time.localtime()# 将当前时间元组转换为可读字符串
current_time_str = time.asctime(current_time_tuple)
print("当前时间:", current_time_str)
格式化时间
格式化时间
time.strftime(format, t)
函数用于将时间元组t
格式化为字符串。format
是一个格式字符串,指定了输出的格式。
import time# 获取当前时间的时间元组
current_time = time.localtime()# 格式化时间
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", current_time)
print("当前时间:", formatted_time)
解析时间
time.strptime(string, format)
函数用于将字符串解析为时间元组。
import time# 时间字符串
time_string = "2023-10-01 12:30:45"# 解析时间字符串
time_tuple = time.strptime(time_string, "%Y-%m-%d %H:%M:%S")# 输出时间元组
print("时间元组:", time_tuple)
输出结果:
时间元组: time.struct_time(tm_year=2023, tm_mon=10, tm_mday=1, tm_hour=12, tm_min=30, tm_sec=45, tm_wday=6, tm_yday=274, tm_isdst=-1)
格式符号说明
格式化字符串 | 用途 | 举例 |
---|---|---|
%Y | 年(4位数字) | 2024 |
%y | 年(后2位数字) | 24 |
%m | 月(数字) | 12 |
%B | 月(英文) | December |
%b | 月(缩写) | Dec |
%A | 星期(英文) | Monday |
%a | 星期(缩写) | Mon |
%d | 日期(数字) | 11 |
%D | 完整日期(月/日/年) | 24/11/18 |
%p | 上午/下午 | PM |
%H | 小时(24 小时制) | 18 |
%h | 小时(12 小时制) | 6 |
%M | 分钟 | 55 |
%S | 秒 | 33 |
使用time库获取当前时间并格式化输出
import time# 获取当前时间戳
timestamp = time.time()
print("当前时间戳:", timestamp)# 获取本地时间并格式化
local_time = time.localtime(timestamp)# 使用不同的格式化字符串
formatted_full_year = time.strftime("%Y", local_time) # 年(全写数字)
formatted_two_digit_year = time.strftime("%y", local_time) # 年(后两位数字)
formatted_month_number = time.strftime("%m", local_time) # 月(数字)
formatted_month_full = time.strftime("%B", local_time) # 月(英文)
formatted_month_abbr = time.strftime("%b", local_time) # 月(缩写)
formatted_weekday_full = time.strftime("%A", local_time) # 星期(英文)
formatted_weekday_abbr = time.strftime("%a", local_time) # 星期(缩写)
formatted_day = time.strftime("%d", local_time) # 日期(数字)
formatted_full_date = time.strftime("%D", local_time) # 完整日期(月/日/年)
formatted_am_pm = time.strftime("%p", local_time) # 上午/下午
formatted_hour_24 = time.strftime("%H", local_time) # 小时(24 小时制)
formatted_hour_12 = time.strftime("%I", local_time) # 小时(12 小时制)
formatted_minute = time.strftime("%M", local_time) # 分钟
formatted_second = time.strftime("%S", local_time) # 秒# 打印格式化后的时间
print("格式化时间示例:")
print("年(全写数字):", formatted_full_year)
print("年(后两位数字):", formatted_two_digit_year)
print("月(数字):", formatted_month_number)
print("月(英文):", formatted_month_full)
print("月(缩写):", formatted_month_abbr)
print("星期(英文):", formatted_weekday_full)
print("星期(缩写):", formatted_weekday_abbr)
print("日期(数字):", formatted_day)
print("完整日期(月/日/年):", formatted_full_date)
print("上午/下午:", formatted_am_pm)
print("小时(24 小时制):", formatted_hour_24)
print("小时(12 小时制):", formatted_hour_12)
print("分钟:", formatted_minute)
print("秒:", formatted_second)
输出类似以下内容
当前时间戳: 1729260848.0795202
格式化时间示例:
年(全写数字): 2024
年(后两位数字): 24
月(数字): 10
月(英文): October
月(缩写): Oct
星期(英文): Friday
星期(缩写): Fri
日期(数字): 18
完整日期(月/日/年): 10/18/24
上午/下午: PM
小时(24 小时制): 22
小时(12 小时制): 10
分钟: 14
秒: 08
暂停程序
在Python中,可以使用time库的sleep()函数来暂停程序的执行。适用于需要延迟执行的场景,例如倒计时、动画效果等。
sleep(seconds):seconds参数可以是浮点数,表示暂停执行指定的秒数。
import timeprint("程序开始")
# 暂停 3 秒
time.sleep(3)
print("程序继续,暂停了 3 秒")
一个简单的倒计时器示例,使用time.sleep()
来实现每秒更新一次倒计时
import timedef countdown(seconds):while seconds > 0:print(f"倒计时: {seconds} 秒")time.sleep(1) # 暂停 1 秒seconds -= 1print("时间到!")# 启动倒计时 5 秒
countdown(5)
输出结果如下:
倒计时: 5 秒
倒计时: 4 秒
倒计时: 3 秒
倒计时: 2 秒
倒计时: 1 秒
时间到!
计时操作
在Python 中,time库可以用于计时和测量代码执行的时间。常用的方法包括
time.time()
和time.perf_counter()
。
简单计时
time.time()
返回当前的时间戳(自1970年1月1日以来的秒数)。可以使用它来测量代码块的执行时间。
import time# 记录开始时间
start_time = time.time()# 执行一些操作
time.sleep(2) # 模拟耗时操作(例如,等待2秒)# 记录结束时间
end_time = time.time()# 计算执行时间
execution_time = end_time - start_time
print(f"代码执行时间: {execution_time:.2f} 秒")
高精度计时
time.perf_counter()
提供了更高精度的计时器,适合用于性能测量。
import time# 记录开始时间
start_time = time.perf_counter()# 执行一些操作
time.sleep(2) # 模拟耗时操作(例如,等待2秒)# 记录结束时间
end_time = time.perf_counter()# 计算执行时间
execution_time = end_time - start_time
print(f"代码执行时间: {execution_time:.4f} 秒")
计时器类的实现
创建一个简单的计时器类,方便重复使用。
import timeclass Timer:def __init__(self):self.start_time = Nonedef start(self):self.start_time = time.perf_counter()def stop(self):if self.start_time is None:raise ValueError("Timer has not been started.")end_time = time.perf_counter()elapsed_time = end_time - self.start_timeself.start_time = None # 重置计时器 return elapsed_timereturn elapsed_time# 使用计时器
timer = Timer()timer.start()
time.sleep(1.5) # 模拟耗时操作
elapsed_time = timer.stop()print(f"计时器记录的时间: {elapsed_time:.4f} 秒")
UTC时间操作
使用
time
库处理UTC时间相对简单,适合进行基本的时间操作。如果有更复杂的时间处理需求,建议使用datetime
或pytz
库。
time库
1.使用time.gmtime()
获取当前的UTC时间,并将其转换为时间元组。
import time# 获取当前 UTC 时间的时间元组
utc_time_tuple = time.gmtime()print(f"当前 UTC 时间的时间元组: {utc_time_tuple}")
输出:
当前 UTC 时间的时间元组: time.struct_time(tm_year=2024, tm_mon=10, tm_mday=18, tm_hour=14, tm_min=51, tm_sec=24, tm_wday=4, tm_yday=292, tm_isdst=0)
2.可以使用 time.strftime()
函数将时间元组格式化为字符串。
import time# 获取当前 UTC 时间的时间元组
utc_time_tuple = time.gmtime()# 格式化输出
formatted_utc = time.strftime("%Y-%m-%d %H:%M:%S", utc_time_tuple)
# 当前 UTC 时间: 2024-10-18 14:54:07
print(f"当前 UTC 时间: {formatted_utc}")
3.如果想获取当前UTC时间的时间戳,可以使用time.time()
函数。
import time# 获取当前 UTC 时间的时间戳
utc_timestamp = time.time()print(f"当前 UTC 时间戳: {utc_timestamp}")
4.如果有一个时间戳,可以使用time.gmtime()
将其转换为 UTC 时间的时间元组。
import time# 获取当前 UTC 时间的时间戳
utc_timestamp = time.time()# 将时间戳转换为 UTC 时间的时间元组
utc_time_tuple = time.gmtime(utc_timestamp)# 格式化输出
formatted_utc = time.strftime("%Y-%m-%d %H:%M:%S", utc_time_tuple)
print(f"当前 UTC 时间: {formatted_utc}")
datetime库
1.使用datetime.datetime.utcnow()
方法可以获取当前的UTC时间。
from datetime import datetime# 获取当前 UTC 时间
utc_now = datetime.utcnow()
print(f"当前 UTC 时间: {utc_now}")
2.使用strftime
方法将UTC时间格式化并输出字符串,以便更易读。
from datetime import datetime# 获取当前 UTC 时间
utc_now = datetime.utcnow()# 格式化输出
formatted_utc = utc_now.strftime("%Y-%m-%d %H:%M:%S")
print(f"当前 UTC 时间: {formatted_utc}")
3.如果需要处理时区,可以使用pytz
库(需要安装)来获取带时区的UTC时间。
from datetime import datetime
import pytz# 获取 UTC 时区对象
utc_timezone = pytz.utc# 获取当前 UTC 时间并设置时区
utc_now = datetime.now(utc_timezone)
print(f"当前带时区的 UTC 时间: {utc_now}")
4.如果需要将本地时间转换为UTC时间,可以使用astimezone()
方法。
from datetime import datetime
import pytz# 获取当前本地时间
local_now = datetime.now()# 将本地时间转换为 UTC 时间
local_timezone = pytz.timezone("Asia/Shanghai") # 例如,使用上海时区
local_now = local_timezone.localize(local_now) # 本地化
utc_now = local_now.astimezone(pytz.utc) # 转换为 UTC 时间print(f"当前本地时间: {local_now}")
print(f"转换后的 UTC 时间: {utc_now}")
输出结果:
当前本地时间: 2024-10-18 22:45:30.948967+08:00
转换后的 UTC 时间: 2024-10-18 14:45:30.948967+00:00