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