十個 Python 時間日期實用函數(shù)
今天,我們將攜手走進Python世界的“時空隧道”,探索那個神秘而強大的神器——datetime模塊。它就像一臺精密的魔法時鐘,能幫助我們精準地操縱、計算與格式化各種時間日期數(shù)據(jù)。接下來,讓我們一起掌握這臺時鐘的10大實用秘技,讓你在編程世界中隨心所欲地駕馭時間!
秘技一:初始化時間日期對象
在Python中,我們有三種主要的時間日期對象:date(只包含年、月、日)、time(只包含時、分、秒、微秒)和datetime(包含全部信息)。初始化它們就像填寫一張時間卡片:
from datetime import datetime, date, time
# 創(chuàng)建一個datetime對象
now = datetime.now() # 獲取當前日期時間
print(now)
# 創(chuàng)建一個date對象
new_year = date(2023, 1, 1) # 定義2023年元旦
print(new_year)
# 創(chuàng)建一個time對象
midnight = time(hour=0, minute=0, second=0) # 定義午夜時刻
print(midnight)
秘技二:從字符串解析時間日期
生活中遇到的時間字符串五花八門?別擔心,datetime.strptime()函數(shù)能將它們統(tǒng)統(tǒng)轉(zhuǎn)化為標準時間對象:
from datetime import datetime
# 解析字符串為datetime對象
birthday_str = "1998-07-4"
birthday_date = datetime.strptime(birthday_str, "%Y-%m-%d")
print(birthday_date)
# 解析復雜格式的字符串
event_str = "2022/06/?7 15:30:45 PM"
event_time = datetime.strptime(event_str, "%Y/%m/%d %I:%M:%S %p")
print(event_time)
秘技三:時間日期對象的操作與比較
如同操作普通數(shù)值一樣,datetime對象支持加減運算,可以輕松計算時間差、偏移日期等。同時,通過比較操作符,我們可以判斷時間先后:
from datetime import timedelta, datetime
# 計算未來一周的時間
one_week_later = datetime.now() + timedelta(weeks=1)
print(one_week_later)
# 比較兩個時間點
meeting_start = datetime(2022, ?, 1, 10, 0)
meeting_end = datetime(2022, 4, 1, 11, 30)
is_meeting_overdue = meeting_start > meeting_end
print(is_meeting_overdue) # 輸出:False
秘技四:格式化輸出時間日期
有了時間對象,如何優(yōu)雅地展示給用戶?strftime()函數(shù)能將時間對象轉(zhuǎn)化為符合特定格式的字符串:
from datetime import datetime
current_time = datetime.now()
# 格式化輸出
formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_time)
# 更多格式選項:
# %Y - 四位數(shù)年份
# %m - 兩位數(shù)月份
# %d - 兩位數(shù)日期
# %H - 24小時制小時數(shù)
# %M - 分鐘數(shù)
# %S - 秒數(shù)
# ...
秘技五:獲取本地時間與UTC時間
datetime模塊提供了便捷方法獲取本地時間和協(xié)調(diào)世界時(UTC),確保你的程序在全球范圍內(nèi)準確運行:
from datetime import datetime
# 獲取當前本地時間
local_time = datetime.now()
print(local_time)
# 獲取當前UTC時間
utc_time = datetime.utcnow()
print(utc_time)
秘技六:時區(qū)轉(zhuǎn)換
跨越時區(qū)?沒問題!借助pytz庫(需額外安裝),你可以輕松進行時區(qū)轉(zhuǎn)換:
import pytz
from datetime import datetime
# 創(chuàng)建一個UTC時間對象
utc_now = datetime.now(pytz.utc)
print(utc_now)
# 轉(zhuǎn)換到紐約時區(qū)
new_york_tz = pytz.timezone('America/New_York')
ny_time = utc_now.astimezone(new_york_tz)
print(ny_time)
秘技七:計算時間間隔
想知道兩個時間點之間相隔多久?total_seconds()方法助你快速得到結(jié)果:
from datetime import datetime, timedelta
start_time = datetime(2022, 4, 1, 9, 0)
end_time = datetime(2022, 4, 1, 17, 30)
duration = end_time - start_time
print(duration.total_seconds()) # 輸出:31800.0 (即9小時30分鐘)
秘技八:獲取特定日期屬性
想單獨提取日期或時間對象的某一部分(如年份、小時等)?直接訪問其屬性即可:
from datetime import datetime
current_datetime = datetime.now()
year = current_datetime.year
month = current_datetime.month
day = current_datetime.day
hour = current_datetime.hour
minute = current_datetime.minute
second = current_datetime.second
print(f"Year: {year}, Month: {month}, Day: {day}")
print(f"Hour: {hour}, Minute: {minute}, Second: {second}")
秘技九:獲取當前時間戳
有時你需要將時間轉(zhuǎn)化為Unix時間戳(自1970年1月1日以來的秒數(shù))。timestamp()方法幫你一鍵搞定:
from datetime import datetime
current_time = datetime.now()
timestamp = current_time.timestamp()
print(timestamp)
秘技十:處理閏年、季度、星期
datetime模塊還提供了判斷閏年、計算季度、獲取星期的方法,豐富你的時間處理工具箱:
from datetime import datetime
leap_year_test = datetime(2024, 1, 1).is_leap_year()
print(leap_year_test) # 輸出:True
current_quarter = datetime.now().quarter
print(current_quarter) # 輸出:2 (當前季度)
current_weekday = datetime.now().weekday()
print(current_weekday) # 輸出:3 (星期四,0代表周一)
結(jié)語
恭喜你,現(xiàn)在你已掌握datetime模塊的10大實用秘技,無論是初始化時間對象、解析字符串、操作比較、格式化輸出,還是處理時區(qū)、計算間隔、獲取屬性、轉(zhuǎn)化時間戳,乃至處理閏年、季度、星期,都能游刃有余。帶上這臺神奇的Python魔法時鐘,去編程世界里暢快地穿越時空吧!