一文学透Python的“时间”

一、前言

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(格式化时间),一个字符串。

# 时间戳,表示从19701100: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库提供了datetimedatetime共三种对象。

  • datetime对象表示一个具体的日期和时间;

  • date对象只包含日期信息(年、月、日);

  • time对象只包含时间信息(时、分、秒、微秒)。

(1)datetime对象的创建

# 创建一个datetime对象,表示当前日期和时间
now = datetime.now()
print(now)

# 创建一个指定日期和时间的datetime对象
specific_time = datetime(2023711200)
print(specific_time)

(2)date对象的创建

# 创建一个date对象,表示当前日期
today = date.today()
print(today)

# 创建一个指定日期的date对象
specific_date = date(202371)
print(specific_date)

(3)time对象的创建

# 创建一个time对象,表示当前时间
current_time = datetime.now().time()
print(current_time)

# 创建一个指定时间的time对象
specific_time = time(131211)
print(specific_time)

4、时间格式的转化

datetimedatetime对象可以很容易地转换为字符串,也可以从字符串解析为datetime对象。这主要通过strftimestrptime方法实现。

(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、时间的运算

datetimedatetime对象支持基本的算术运算,如加法和减法。这些运算通常与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)比较日期和时间

你可以使用比较运算符(如==<>等)来比较datetimedatetime对象。

# 比较两个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

(0)
码上实战的头像码上实战

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!