一文掌握 Python 中的 datetime 模塊
什么是 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 模塊的基本用法,包括如何獲取當前日期和時間、創建特定的日期和時間、格式化和解析日期時間字符串、計算時間差、增加或減少時間、獲取日期的各個部分、以及時間戳的轉換。