一文掌握 Python 中的 datetime 模块

开发
Datetime 模块是 Python 标准库中的一个模块,用于处理日期和时间,它提供了多种类和方法,帮助我们轻松地创建、操作和格式化日期和时间。

什么是 datetime 模块?

datetime 模块是 Python 标准库中的一个模块,用于处理日期和时间。它提供了多种类和方法,帮助我们轻松地创建、操作和格式化日期和时间。

1. 导入 datetime 模块

首先,我们需要导入 datetime 模块。通常我们会导入整个模块,或者只导入我们需要的类和方法。

import datetime

或者:

from datetime import datetime, date, time, timedelta

2. 获取当前日期和时间

使用 datetime.now() 方法可以获取当前的日期和时间。

# 获取当前日期和时间
current_datetime = datetime.datetime.now()
print("当前日期和时间:", current_datetime)

3. 获取当前日期

使用 date.today() 方法可以获取当前的日期。

# 获取当前日期
current_date = datetime.date.today()
print("当前日期:", current_date)

4. 创建特定的日期和时间

我们可以使用 datetime 类来创建特定的日期和时间。

# 创建特定的日期和时间
specific_datetime = datetime.datetime(2023, 10, 1, 12, 30, 0)
print("特定的日期和时间:", specific_datetime)

5. 格式化日期和时间

使用 strftime 方法可以将日期和时间格式化为字符串。

# 格式化日期和时间
formatted_datetime = specific_datetime.strftime("%Y-%m-%d %H:%M:%S")
print("格式化的日期和时间:", formatted_datetime)

6. 解析日期和时间字符串

使用 strptime 方法可以将字符串解析为日期和时间对象。

# 解析日期和时间字符串
parsed_datetime = datetime.datetime.strptime("2023-10-01 12:30:00", "%Y-%m-%d %H:%M:%S")
print("解析后的日期和时间:", parsed_datetime)

7. 计算时间差

使用 timedelta 类可以计算两个日期或时间之间的差值。

# 计算时间差
start_time = datetime.datetime(2023, 10, 1, 12, 0, 0)
end_time = datetime.datetime(2023, 10, 1, 12, 30, 0)
time_difference = end_time - start_time
print("时间差:", time_difference)

8. 增加或减少时间

使用 timedelta 类可以增加或减少日期和时间。

# 增加时间
new_time = start_time + datetime.timedelta(hours=2)
print("增加2小时后的时间:", new_time)

# 减少时间
old_time = end_time - datetime.timedelta(minutes=15)
print("减少15分钟后的时间:", old_time)

9. 获取日期的各个部分

可以使用 year, month, day, hour, minute, second 属性来获取日期和时间的各个部分。

# 获取日期和时间的各个部分
year = specific_datetime.year
month = specific_datetime.month
day = specific_datetime.day
hour = specific_datetime.hour
minute = specific_datetime.minute
second = specific_datetime.second

print(f"年: {year}, 月: {month}, 日: {day}, 时: {hour}, 分: {minute}, 秒: {second}")

10. 时间戳

使用 timestamp 方法可以将日期和时间转换为时间戳,使用 fromtimestamp 方法可以将时间戳转换为日期和时间。

# 将日期和时间转换为时间戳
timestamp = specific_datetime.timestamp()
print("时间戳:", timestamp)

# 将时间戳转换为日期和时间
from_timestamp = datetime.datetime.fromtimestamp(timestamp)
print("从时间戳转换的日期和时间:", from_timestamp)

实战案例:日程管理器

假设我们要开发一个简单的日程管理器,用户可以输入任务的名称、开始时间和结束时间,程序会计算任务的持续时间并显示所有任务。

import datetime

class Task:
    def __init__(self, name, start_time, end_time):
        self.name = name
        self.start_time = datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")
        self.end_time = datetime.datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S")
    
    def duration(self):
        return self.end_time - self.start_time
    
    def __str__(self):
        return (f"任务: {self.name}\n"
                f"开始时间: {self.start_time.strftime('%Y-%m-%d %H:%M:%S')}\n"
                f"结束时间: {self.end_time.strftime('%Y-%m-%d %H:%M:%S')}\n"
                f"持续时间: {self.duration()}")

def main():
    tasks = []
    while True:
        name = input("请输入任务名称(输入'q'退出): ")
        if name.lower() == 'q':
            break
        start_time = input("请输入开始时间(格式: YYYY-MM-DD HH:MM:SS): ")
        end_time = input("请输入结束时间(格式: YYYY-MM-DD HH:MM:SS): ")
        task = Task(name, start_time, end_time)
        tasks.append(task)
    
    print("\n所有任务:")
    for task in tasks:
        print(task)

if __name__ == "__main__":
    main()

总结

本文介绍了 datetime 模块的基本用法,包括如何获取当前日期和时间、创建特定的日期和时间、格式化和解析日期时间字符串、计算时间差、增加或减少时间、获取日期的各个部分、以及时间戳的转换。

责任编辑:赵宁宁 来源: 小白PythonAI编程
相关推荐

2021-09-11 10:41:27

PythonPickle模块

2024-11-27 06:46:47

Python列表推导式嵌套逻辑

2022-12-20 07:39:46

2023-12-21 17:11:21

Containerd管理工具命令行

2022-10-21 17:24:34

契约测试定位

2021-07-10 14:32:30

Python导入模块

2017-11-28 15:20:27

Python语言编程

2021-05-12 18:22:36

Linux 内存管理

2023-10-24 11:44:21

2023-12-22 08:38:02

Pythondatetimetime

2024-06-28 09:52:47

列表Python

2023-10-04 00:02:00

本文将从入门到精通,冒泡排序

2020-10-09 07:56:52

Linux

2023-12-15 09:45:21

阻塞接口

2023-10-21 20:50:00

Python项目PyCharm

2017-10-18 17:16:59

ZeroHeroPython

2023-09-03 21:09:28

光纤通信光模块

2021-02-22 09:05:59

Linux字符设备架构

2023-03-10 07:57:26

2021-06-04 09:35:05

Linux字符设备架构
点赞
收藏

51CTO技术栈公众号