一文掌握 Python 中的 datetime 模塊
什么是 datetime 模塊?
datetime 模塊是 Python 標(biāo)準(zhǔn)庫(kù)中的一個(gè)模塊,用于處理日期和時(shí)間。它提供了多種類(lèi)和方法,幫助我們輕松地創(chuàng)建、操作和格式化日期和時(shí)間。
1. 導(dǎo)入 datetime 模塊
首先,我們需要導(dǎo)入 datetime 模塊。通常我們會(huì)導(dǎo)入整個(gè)模塊,或者只導(dǎo)入我們需要的類(lèi)和方法。
import datetime
或者:
from datetime import datetime, date, time, timedelta
2. 獲取當(dāng)前日期和時(shí)間
使用 datetime.now() 方法可以獲取當(dāng)前的日期和時(shí)間。
# 獲取當(dāng)前日期和時(shí)間
current_datetime = datetime.datetime.now()
print("當(dāng)前日期和時(shí)間:", current_datetime)
3. 獲取當(dāng)前日期
使用 date.today() 方法可以獲取當(dāng)前的日期。
# 獲取當(dāng)前日期
current_date = datetime.date.today()
print("當(dāng)前日期:", current_date)
4. 創(chuàng)建特定的日期和時(shí)間
我們可以使用 datetime 類(lèi)來(lái)創(chuàng)建特定的日期和時(shí)間。
# 創(chuàng)建特定的日期和時(shí)間
specific_datetime = datetime.datetime(2023, 10, 1, 12, 30, 0)
print("特定的日期和時(shí)間:", specific_datetime)
5. 格式化日期和時(shí)間
使用 strftime 方法可以將日期和時(shí)間格式化為字符串。
# 格式化日期和時(shí)間
formatted_datetime = specific_datetime.strftime("%Y-%m-%d %H:%M:%S")
print("格式化的日期和時(shí)間:", formatted_datetime)
6. 解析日期和時(shí)間字符串
使用 strptime 方法可以將字符串解析為日期和時(shí)間對(duì)象。
# 解析日期和時(shí)間字符串
parsed_datetime = datetime.datetime.strptime("2023-10-01 12:30:00", "%Y-%m-%d %H:%M:%S")
print("解析后的日期和時(shí)間:", parsed_datetime)
7. 計(jì)算時(shí)間差
使用 timedelta 類(lèi)可以計(jì)算兩個(gè)日期或時(shí)間之間的差值。
# 計(jì)算時(shí)間差
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("時(shí)間差:", time_difference)
8. 增加或減少時(shí)間
使用 timedelta 類(lèi)可以增加或減少日期和時(shí)間。
# 增加時(shí)間
new_time = start_time + datetime.timedelta(hours=2)
print("增加2小時(shí)后的時(shí)間:", new_time)
# 減少時(shí)間
old_time = end_time - datetime.timedelta(minutes=15)
print("減少15分鐘后的時(shí)間:", old_time)
9. 獲取日期的各個(gè)部分
可以使用 year, month, day, hour, minute, second 屬性來(lái)獲取日期和時(shí)間的各個(gè)部分。
# 獲取日期和時(shí)間的各個(gè)部分
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}, 時(shí): {hour}, 分: {minute}, 秒: {second}")
10. 時(shí)間戳
使用 timestamp 方法可以將日期和時(shí)間轉(zhuǎn)換為時(shí)間戳,使用 fromtimestamp 方法可以將時(shí)間戳轉(zhuǎn)換為日期和時(shí)間。
# 將日期和時(shí)間轉(zhuǎn)換為時(shí)間戳
timestamp = specific_datetime.timestamp()
print("時(shí)間戳:", timestamp)
# 將時(shí)間戳轉(zhuǎn)換為日期和時(shí)間
from_timestamp = datetime.datetime.fromtimestamp(timestamp)
print("從時(shí)間戳轉(zhuǎn)換的日期和時(shí)間:", from_timestamp)
實(shí)戰(zhàn)案例:日程管理器
假設(shè)我們要開(kāi)發(fā)一個(gè)簡(jiǎn)單的日程管理器,用戶(hù)可以輸入任務(wù)的名稱(chēng)、開(kāi)始時(shí)間和結(jié)束時(shí)間,程序會(huì)計(jì)算任務(wù)的持續(xù)時(shí)間并顯示所有任務(wù)。
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"任務(wù): {self.name}\n"
f"開(kāi)始時(shí)間: {self.start_time.strftime('%Y-%m-%d %H:%M:%S')}\n"
f"結(jié)束時(shí)間: {self.end_time.strftime('%Y-%m-%d %H:%M:%S')}\n"
f"持續(xù)時(shí)間: {self.duration()}")
def main():
tasks = []
while True:
name = input("請(qǐng)輸入任務(wù)名稱(chēng)(輸入'q'退出): ")
if name.lower() == 'q':
break
start_time = input("請(qǐng)輸入開(kāi)始時(shí)間(格式: YYYY-MM-DD HH:MM:SS): ")
end_time = input("請(qǐng)輸入結(jié)束時(shí)間(格式: YYYY-MM-DD HH:MM:SS): ")
task = Task(name, start_time, end_time)
tasks.append(task)
print("\n所有任務(wù):")
for task in tasks:
print(task)
if __name__ == "__main__":
main()
總結(jié)
本文介紹了 datetime 模塊的基本用法,包括如何獲取當(dāng)前日期和時(shí)間、創(chuàng)建特定的日期和時(shí)間、格式化和解析日期時(shí)間字符串、計(jì)算時(shí)間差、增加或減少時(shí)間、獲取日期的各個(gè)部分、以及時(shí)間戳的轉(zhuǎn)換。