一、前言
Python在处理与时间相关的操作时有两个重要库:time和datetime。这两个库均为Python的内置标准库,不需要去下载,直接import即可。datetime库是基于time库进行封装的,提供了更加高级的时间操作方法,而time库更加底层。
二、time库
1、导入
import time
2、获取当前时间戳
timestamp = time.time()
print(timestamp) # 输出:1712061249.7604306
3、时间的格式
time库中的时间主要有三种格式:
-
timestamp(时间戳),一个浮点数;
-
struct_time(时间元组),一个元组;
-
format_time(格式化时间),一个字符串。
# 时间戳,表示从1970年1月1日00:00:00开始按秒计算的偏移量
1712063955.8391504
# 时间元组,一个包含9个元素的元组,分别表示年、月、日、时、分、秒、一周中的第几天、一年中的第几天、夏令时标志
time.struct_time(tm_year=2024, tm_mon=4, tm_mday=2, tm_hour=21, tm_min=19, tm_sec=15, tm_wday=1, tm_yday=93, tm_isdst=0)
# 格式化时间
Tue Apr 2 21:19:15 2024
4、时间格式的转化
(1)(时间戳)与(时间元组)之间的转换
# 时间戳 ——> 时间元组
struct_time = time.localtime(timestamp) # 本地时间
struct_time = time.gmtime(timestamp) # UTC时间
# 时间元组 ——> 时间戳
timestamp = time.mktime(struct_time)
(2)(时间戳)与(格式化时间)之间的转换
# 时间戳 ——> 格式化时间
format_time = time.ctime(timestamp)
(3)(时间元组)与(格式化时间)之间的转换
# 时间元组——>格式化时间
format_time = time.asctime(struct_time)
format_time = time.strftime("%Y-%m-%d %H:%M:%S", struct_time)
# 格式化时间——>时间元组
struct_time = time.strptime("2023-07-01 12:00:00", "%Y-%m-%d %H:%M:%S")
5、时间的运算
主要通过时间戳来计算或者比较。比如计算操作耗时:
start_time = time.time()
# 执行一些操作
end_time = time.time()
time_difference = end_time - start_time
print(f"操作耗时: {time_difference}秒")
三、datetime库
1、导入
from datetime import datetime, date, time, timedelta
2、获取当前时间对象
# 获取当前日期和时间的datetime对象
now = datetime.now()
print(now) # 输出:2024-04-02 22:03:59.883376
# 获取当前日期的date对象
today = date.today()
print(today) # 输出:2024-04-02
# 获取当前时间的time对象
current_time = datetime.now().time()
print(current_time) # 输出:22:10:46.886840
3、时间的格式
datetime库提供了datetime
、date
和time
共三种对象。
-
datetime
对象表示一个具体的日期和时间; -
date
对象只包含日期信息(年、月、日); -
time
对象只包含时间信息(时、分、秒、微秒)。
(1)datetime对象的创建
# 创建一个datetime对象,表示当前日期和时间
now = datetime.now()
print(now)
# 创建一个指定日期和时间的datetime对象
specific_time = datetime(2023, 7, 1, 12, 0, 0)
print(specific_time)
(2)date对象的创建
# 创建一个date对象,表示当前日期
today = date.today()
print(today)
# 创建一个指定日期的date对象
specific_date = date(2023, 7, 1)
print(specific_date)
(3)time对象的创建
# 创建一个time对象,表示当前时间
current_time = datetime.now().time()
print(current_time)
# 创建一个指定时间的time对象
specific_time = time(13, 12, 11)
print(specific_time)
4、时间格式的转化
datetime
、date
和time
对象可以很容易地转换为字符串,也可以从字符串解析为datetime
对象。这主要通过strftime
和strptime
方法实现。
(1)将datetime对象格式化为字符串
# 将datetime对象格式化为字符串
formatted_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(formatted_time)
(2)将字符串解析为datetime对象
# 将字符串解析为datetime对象
parsed_time = datetime.strptime("2023-07-01 12:00:00", "%Y-%m-%d %H:%M:%S")
print(parsed_time)
注意:date
对象、time
对象转化方法与datetime
对象转化方法相同。
5、时间的运算
datetime
、date
和time
对象支持基本的算术运算,如加法和减法。这些运算通常与timedelta
对象一起使用,timedelta
表示两个日期或时间之间的差。
(1)使用timedelta进行日期和时间的加减
# 使用timedelta添加时间
one_day_later = now + timedelta(days=1)
print(one_day_later)
# 使用timedelta减去时间
one_hour_ago = now - timedelta(hours=1)
print(one_hour_ago)
(2)比较日期和时间
你可以使用比较运算符(如==
、<
、>
等)来比较datetime
、date
和time
对象。
# 比较两个datetime对象
if now > specific_time:
print("当前时间晚于指定时间")
else:
print("当前时间早于或等于指定时间")
四、time和datetime的区别
-
层级:time库比datetime库更加底层。time库是使用C语言编写的,速度非常快,在对程序执行时间要求较高的场景下,可以优先选择它来处理时间。而datetime库是对time的封装,更适合处理时间的格式化和操作。
-
精确度:time库的时间精确度为秒级别,而datetime库的时间精确度为微秒级别,包括年、月、日、时、分、秒以及微秒。
-
使用场景:datetime库提供了对日期和时间的全面支持,而time库则专注于一天中的时间的处理和测量。
原文始发于微信公众号(愤怒的it男):一文学透Python的“时间”
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/275113.html