今天,我們將攜手走進(jìn)Python世界的“時(shí)空隧道”,探索那個(gè)神秘而強(qiáng)大的神器——datetime模塊。它就像一臺(tái)精密的魔法時(shí)鐘,能幫助我們精準(zhǔn)地操縱、計(jì)算與格式化各種時(shí)間日期數(shù)據(jù)。接下來(lái),讓我們一起掌握這臺(tái)時(shí)鐘的10大實(shí)用秘技,讓你在編程世界中隨心所欲地駕馭時(shí)間!
在Python中,我們有三種主要的時(shí)間日期對(duì)象:date(只包含年、月、日)、time(只包含時(shí)、分、秒、微秒)和datetime(包含全部信息)。初始化它們就像填寫(xiě)一張時(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í)間字符串五花八門(mén)?別擔(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ù)值一樣,datetime對(duì)象支持加減運(yùn)算,可以輕松計(jì)算時(shí)間差、偏移日期等。同時(shí),通過(guò)比較操作符,我們可以判斷時(shí)間先后:
from datetime import timedelta, datetime# 計(jì)算未來(lái)一周的時(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_endprint(is_meeting_overdue) # 輸出:False
有了時(shí)間對(duì)象,如何優(yōu)雅地展示給用戶?strftime()函數(shù)能將時(shí)間對(duì)象轉(zhuǎn)化為符合特定格式的字符串:
from datetime import datetimecurrent_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ù)# ...
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ū)?沒(méi)問(wèn)題!借助pytz庫(kù)(需額外安裝),你可以輕松進(jìn)行時(shí)區(qū)轉(zhuǎn)換:
import pytzfrom 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)
想知道兩個(gè)時(shí)間點(diǎn)之間相隔多久?total_seconds()方法助你快速得到結(jié)果:
from datetime import datetime, timedeltastart_time = datetime(2022, 4, 1, 9, 0)end_time = datetime(2022, 4, 1, 17, 30)duration = end_time - start_timeprint(duration.total_seconds()) # 輸出:31800.0 (即9小時(shí)30分鐘)
秘技八:獲取特定日期屬性
想單獨(dú)提取日期或時(shí)間對(duì)象的某一部分(如年份、小時(shí)等)?直接訪問(wèn)其屬性即可:
from datetime import datetimecurrent_datetime = datetime.now()year = current_datetime.yearmonth = current_datetime.monthday = current_datetime.dayhour = current_datetime.hourminute = current_datetime.minutesecond = current_datetime.secondprint(f"Year: {year}, Month: {month}, Day: {day}")print(f"Hour: {hour}, Minute: {minute}, Second: {second}")
有時(shí)你需要將時(shí)間轉(zhuǎn)化為Unix時(shí)間戳(自1970年1月1日以來(lái)的秒數(shù))。timestamp()方法幫你一鍵搞定:
from datetime import datetimecurrent_time = datetime.now()timestamp = current_time.timestamp()print(timestamp)
datetime模塊還提供了判斷閏年、計(jì)算季度、獲取星期的方法,豐富你的時(shí)間處理工具箱:
from datetime import datetimeleap_year_test = datetime(2024, 1, 1).is_leap_year()print(leap_year_test) # 輸出:Truecurrent_quarter = datetime.now().quarterprint(current_quarter) # 輸出:2 (當(dāng)前季度)current_weekday = datetime.now().weekday()print(current_weekday) # 輸出:3 (星期四,0代表周一)
恭喜你,現(xiàn)在你已掌握datetime模塊的10大實(shí)用秘技,無(wú)論是初始化時(shí)間對(duì)象、解析字符串、操作比較、格式化輸出,還是處理時(shí)區(qū)、計(jì)算間隔、獲取屬性、轉(zhuǎn)化時(shí)間戳,乃至處理閏年、季度、星期,都能游刃有余。帶上這臺(tái)神奇的Python魔法時(shí)鐘,去編程世界里暢快地穿越時(shí)空吧!
本文鏈接:http://www.tebozhan.com/showinfo-26-88336-0.html十個(gè) Python 時(shí)間日期實(shí)用函數(shù)
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com
上一篇: C# 獲取 Windows 系統(tǒng)信息及CPU、內(nèi)存和磁盤(pán)使用情況
下一篇: C++力量與靈活性的完美結(jié)合