CodeGym /课程 /Python SELF ZH /datetime库

datetime库

Python SELF ZH
第 14 级 , 课程 5
可用

9.1 日期和时间处理

程序员经常需要在程序中处理日期和时间。所以,Python提供了两个标准库来处理这些情况: datetimetime

datetime是Python标准库的一部分,提供用于日期和时间操作的类。它允许创建、操作和格式化日期和时间,还能执行算术运算。

datetime 库的主要类

datetime.date

这个类表示没有时间的日期(年、月、日)。它对处理日历日期很有用。

使用示例:


import datetime

# 创建日期对象
d = datetime.date(2023, 5, 24)
print(d)  # 输出: 2023-05-24
            
# 获取当前日期
today = datetime.date.today()
print(today)
            
# 访问年、月、日属性
print(d.year)  # 输出: 2023
print(d.month)  # 输出: 5
print(d.day)  # 输出: 24

datetime.time

这个类表示没有日期的时间(小时、分钟、秒、微秒)。它对处理一天中的时间很有用。

使用示例:


import datetime

# 创建时间对象
t = datetime.time(14, 30, 45)
print(t)  # 输出: 14:30:45
            
# 访问小时、分钟和秒属性
print(t.hour)  # 输出: 14
print(t.minute)  # 输出: 30
print(t.second)  # 输出: 45

datetime.datetime

这个类结合了日期和时间(年、月、日、小时、分钟、秒、微秒)。它对处理特定时间点很有用。

使用示例:


import datetime

# 创建日期时间对象
dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
print(dt)  # 输出: 2023-05-24 14:30:45
        
# 获取当前日期和时间
now = datetime.datetime.now()
print(now)
        
# 访问日期和时间属性
print(dt.year)  # 输出: 2023
print(dt.month)  # 输出: 5
print(dt.day)  # 输出: 24
print(dt.hour)  # 输出: 14
print(dt.minute)  # 输出: 30
print(dt.second)  # 输出: 45

datetime.timedelta

这个类表示两个时间点之间的差异,以天、秒和微秒表示。它对进行日期和时间的算术运算很有用。

使用示例:


import datetime

# 创建 timedelta 对象
delta = datetime.timedelta(days=10, hours=5, minutes=30)
print(delta)  # 输出: 10 days, 5:30:00
        
# 将 timedelta 添加到日期
dt = datetime.datetime(2023, 5, 24, 14, 30)
new_dt = dt + delta
print(new_dt)  # 输出: 2023-06-03 20:00:00
        
# 从日期中减去 timedelta
earlier_dt = dt - delta
print(earlier_dt)  # 输出: 2023-05-14 09:00:00

4.2 日期和时间的格式化与解析

我们经常需要将日期转换为特定格式的字符串。相反的过程,将字符串转换为对象,通常称为解析。在Python中,这些操作也有相应的类和方法:

strftime() 方法

strftime() 方法用于根据指定格式将 datetime 对象格式化为字符串。

使用示例:


import datetime

dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
    
# 日期和时间格式化
formatted_dt = dt.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_dt)  # 输出: 2023-05-24 14:30:45
    
# 仅日期格式化
formatted_date = dt.strftime("%d-%m-%Y")
print(formatted_date)  # 输出: 24-05-2023
    
# 仅时间格式化
formatted_time = dt.strftime("%H:%M:%S")
print(formatted_time)  # 输出: 14:30:45

strptime() 方法

strptime() 方法 用于根据指定格式解析字符串为 datetime 对象。

使用示例:


import datetime

# 将字符串解析为 datetime 对象
date_str = "24-05-2023 14:30:45"
dt = datetime.datetime.strptime(date_str, "%d-%m-%Y %H:%M:%S")
print(dt)  # 输出: 2023-05-24 14:30:45
    
# 将字符串解析为 date 对象
date_str = "24-05-2023"
d = datetime.datetime.strptime(date_str, "%d-%m-%Y").date()
print(d)  # 输出: 2023-05-24
    
# 将字符串解析为 time 对象
time_str = "14:30:45"
t = datetime.datetime.strptime(time_str, "%H:%M:%S").time()
print(t)  # 输出: 14:30:45

4.3 处理时区

实践表明,我们的服务用户来自世界各地,不同国家有不同的时区 (timezone)。作为程序员,你需要能处理这些问题。

当然,Python也有对应的类来处理这些情况:

timezone

来自 datetime 模块的 timezone 类允许处理时区。


import datetime

# 创建具有 UTC 时区的 datetime 对象
utc_dt = datetime.datetime(2023, 5, 24, 14, 30, 45, tzinfo=datetime.timezone.utc)
print(utc_dt)  # 输出: 2023-05-24 14:30:45+00:00
        
# 转换为另一个时区
tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))
tokyo_dt = utc_dt.astimezone(tokyo_tz)
print(tokyo_dt)  # 输出: 2023-05-24 23:30:45+09:00

我们非常简要地介绍了 datetime 库,甚至可以说是浮光掠影。以后我们还会再次回到它,将学习如何使用它来解决更具体的问题。现在,我只是想让大家初步了解它,并扩展你们对标准库的认识。

对于任何库,首先需要知道它的存在,以及能够用它来做什么。而函数列表、参数及其所有功能,总能从官方文档中找到。

2
任务
Python SELF ZH, 第 14 级, 课程 5
已锁定
生日。
生日。
2
任务
Python SELF ZH, 第 14 级, 课程 5
已锁定
时区。
时区。
1
调查/小测验
装饰器第 14 级,课程 5
不可用
装饰器
装饰器
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION