Python中時(shí)間元組與時(shí)間日期的使用及說明
一、時(shí)間元組(time.struct_time)
python中時(shí)間元組是一個(gè)比較重要的類型,通過時(shí)間元組我們可以獲取,年月日時(shí)分秒,星期幾,一年中的第幾天等信息。
| 索引 | 屬性 | 屬性含義 | 屬性取值 |
|---|---|---|---|
| 0 | tm_year | 4位數(shù)年份 | 0000-9999 |
| 1 | tm_mon | 月 | 1-12 |
| 2 | tm_mday | 日 | 1-31 |
| 3 | tm_hour | 小時(shí) | 0-23 |
| 4 | tm_min | 分鐘 | 0-59 |
| 5 | tm_sec | 秒 | 0-61,60、61是閏秒 |
| 6 | tm_wday | 星期幾 | 0-6,0是周一 |
| 7 | tm_yday | 一年的第幾天 | 1到366,366閏年 |
| 8 | tm_isdst | 夏令標(biāo)識(shí) | 1-夏令時(shí),0-非夏令時(shí) -1-不確定,可能是因?yàn)槭謩?dòng)創(chuàng)建 |

import time
# <class 'time.struct_time'>
localtime = time.localtime()
# time.struct_time(tm_year=2019, tm_mon=11, tm_mday=3, tm_hour=9, tm_min=8, tm_sec=21, tm_wday=0, tm_yday=307, tm_isdst=0)
print(type(localtime))
print(localtime)
for attr in localtime:
print(attr)二、時(shí)間格式化
時(shí)間格式化是非常常用的一個(gè)功能,不管是從字符串到struct_time、date、datetime,還是從struct_time、date、datetime到字符串都需要用到。
格式化主要涉及到2個(gè)函數(shù):
strftime:str表示字符串,f是format,time是時(shí)間,就是時(shí)間格式化為字符串strptime:str表示字符串,p是parse,time是時(shí)間,就是字符串解析為時(shí)間
time和datetime都有這2個(gè)函數(shù),后面會(huì)介紹,下面先看一下格式化的含義。
| 格式 | 含義 |
|---|---|
| %y | 兩位數(shù)的年份表示,00-99 |
| %Y | 四位數(shù)的年份表示,0000-9999 |
| %m | 月份,01-12 |
| %d | 日期,0-31 |
| %H | 24小時(shí)制小時(shí)數(shù),0-23 |
| %I | 12小時(shí)制小時(shí)數(shù),01-12 |
| %M | 分鐘,00-59 |
| %S | 秒,00-59 |
| %a | 本地簡(jiǎn)化星期名稱 |
| %A | 本地完整星期名稱 |
| %b | 本地簡(jiǎn)化的月份名稱 |
| %B | 本地完整的月份名稱 |
| %c | 本地日期表示和時(shí)間表示 |
| %j | 第幾天,001-366 |
| %p | 本地A.M\P.M |
| %U | 第幾周,00-53,星期天為星期的開始 |
| %W | 第幾周,00-53,星期一為星期的開始 |
| %w | 星期幾,0-6,星期天為星期的開始 |
| %x | 本地日期 |
| %X | 本地時(shí)間 |
| %Z | 當(dāng)前時(shí)區(qū)的名稱 |
| %% | %符合,因?yàn)楸划?dāng)做轉(zhuǎn)義字符 |

三、time
time模塊,主要處理和時(shí)間元組(struct_time)的格式化和解析。
當(dāng)日也有本地化時(shí)間、獲取時(shí)間戳,程序休眠等函數(shù)。
注意和datetime.time區(qū)分,datetime.time就是一般意義上的日期時(shí)間中的時(shí)間部分,主要就是時(shí)分秒。
import time
# 格林威治天文時(shí)間元組
print(time.gmtime())
print(time.gmtime(1577851199))
# 本地時(shí)間元組
print(time.localtime())
print(time.localtime(1577851199))
# 格式化時(shí)間
# time.asctime([tupletime])
print(time.asctime())
# time.ctime([secs])
print(time.ctime())
# 格式化成2020-01-01 11:59:59形式
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
# 將格式字符串轉(zhuǎn)換為時(shí)間戳
a = "2020-01-01 11:59:59"
str2TT = time.strptime(a, "%Y-%m-%d %H:%M:%S")
# 時(shí)間元組到時(shí)間戳
ts = time.mktime(str2TT)
print(ts)
# 時(shí)間戳
print(time.time())
# 休眠秒
time.sleep(1)四、datetime
datetime模塊中主要使用的是:
datetime.date:日期(2025-01-01)datetime.time:時(shí)間(12:00:00)datetime.datetime:時(shí)期(2025-01-01 12:00:00)
import datetime
import time
today = datetime.date.today()
print(today)
print(type(today))
# 星期幾,isoweekday星期天是第一天,weekday星期一是第一天
print(today.isoweekday())
print(today.weekday())
# 時(shí)間元組
print(today.timetuple())
# 第幾天
print(today.toordinal())
datetime.date.fromordinal(today.toordinal())
print(datetime.date(2020, 1, 1))
datetime.date.fromtimestamp(time.time())
print(datetime.time(12, 59, 59, 999))
# 現(xiàn)在本地日期
print(datetime.datetime.now())
# 現(xiàn)在utc日期
print(datetime.datetime.utcnow())
print(datetime.datetime(2020, 1, 31, 12, 59, 59, 0))
# 字符串到日期
print(datetime.datetime.strptime('2020-1-1 12:01', '%Y-%m-%d %H:%M'))
# 日期格式化
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M'))最常用的還是:
# 字符串得到日期
datetime.datetime.strptime('2020-1-1 12:01', '%Y-%m-%d %H:%M')
# 日期格式化
datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')五、timedelta
timedelta也是datetime模塊下的,主要是用于日期計(jì)算的。
在需要使用到時(shí)間間隔的時(shí)候非常有用,例如需要上一個(gè)月,前一天,上一周這樣的日期,就可以使用datetime和timedelta很容易得到。
import datetime import time today = datetime.date.today() # 上個(gè)月最后一天 lastMonthLastDay = datetime.date(today.year, today.month, 1) - datetime.timedelta(1) print(lastMonthLastDay) # 上個(gè)月第一天 lastMonthFirstDay = datetime.date(lastMonthLastDay.year, lastMonthLastDay.month, 1) print(lastMonthFirstDay) # 一周之前 print(today - datetime.timedelta(7)) # 本周一 thisMonday = today - datetime.timedelta(today.isoweekday()-1) print(thisMonday) # 本周星期天 lastMonday = thisMonday - datetime.timedelta(7) print(lastMonday) # 上周星期天 lastSunday = today - datetime.timedelta(days=today.isoweekday()) print(lastSunday) # 上周星期一 lastMonday = lastSunday - datetime.timedelta(days=6) print(lastMonday) # 8小時(shí)后 print(datetime.datetime.now() + datetime.timedelta(hours=8)) start = datetime.datetime.now() time.sleep(1) end = datetime.datetime.now() diff = end - start # <class 'datetime.timedelta'> print(type(diff)) print(diff)
六、calendar
import calendar # 是否是閏年 print(calendar.isleap(2020))
calendar是日歷
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
時(shí)間序列預(yù)測(cè)中的數(shù)據(jù)滑窗操作實(shí)例(python實(shí)現(xiàn))
滑動(dòng)窗口操作非常普遍,非常有用,它們也很容易在Python中實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于時(shí)間序列預(yù)測(cè)中的數(shù)據(jù)滑窗操作python實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2022-03-03
Python3安裝requests庫(kù)的步驟及使用示例和常見問題
Python3的requests庫(kù)是處理HTTP請(qǐng)求最常用的工具之一,它簡(jiǎn)化了與Web服務(wù)的交互,讓開發(fā)者能更專注于業(yè)務(wù)邏輯,而非底層網(wǎng)絡(luò)細(xì)節(jié),這篇文章主要介紹了Python3安裝requests庫(kù)的步驟及使用示例和常見問題,需要的朋友可以參考下2026-06-06
Django REST framework 分頁(yè)的實(shí)現(xiàn)代碼
這篇文章主要介紹了Django REST framework 分頁(yè)的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
Python關(guān)鍵字及可變參數(shù)*args,**kw原理解析
這篇文章主要介紹了Python關(guān)鍵字及可變參數(shù)*args,**kw原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
利用Python實(shí)現(xiàn)Markdown文檔格式轉(zhuǎn)換詳解
這篇文章主要介紹了如何利用Python中的MarkItDown庫(kù)將多種文件高效轉(zhuǎn)換為Markdown文本,以及如何使用Python-Markdown庫(kù)將Markdown文本轉(zhuǎn)換為HTML,需要的可以參考下2025-03-03
Python利用AutoGrad實(shí)現(xiàn)自動(dòng)計(jì)算函數(shù)斜率和梯度
AutoGrad 是一個(gè)老少皆宜的 Python 梯度計(jì)算模塊。對(duì)于大學(xué)生、機(jī)器學(xué)習(xí)愛好者而言,你只需要傳遞給它Numpy這樣的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)下編寫的損失函數(shù),它就可以自動(dòng)計(jì)算損失函數(shù)的導(dǎo)數(shù)(梯度)。本文將從普通斜率計(jì)算開始,介紹到如何只使用它來實(shí)現(xiàn)一個(gè)邏輯回歸模型2022-07-07
python使用fastapi實(shí)現(xiàn)多語言國(guó)際化的操作指南
本文介紹了使用Python和FastAPI實(shí)現(xiàn)多語言國(guó)際化的操作指南,包括多語言架構(gòu)技術(shù)棧、翻譯管理、前端本地化、語言切換機(jī)制以及常見陷阱和最佳實(shí)踐,需要的朋友可以參考下2025-02-02
使用Python進(jìn)行QQ批量登錄的實(shí)例代碼
這篇文章主要介紹了使用Python進(jìn)行QQ批量登錄的實(shí)例代碼,代碼簡(jiǎn)單易懂非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
Flask請(qǐng)求數(shù)據(jù)獲取方法詳解
在 Flask 中,所有客戶端請(qǐng)求的數(shù)據(jù)都通過全局的 request 對(duì)象訪問,該對(duì)象是 請(qǐng)求上下文 的一部分,僅在請(qǐng)求處理期間存在,Flask 在收到請(qǐng)求時(shí)自動(dòng)創(chuàng)建 request 對(duì)象,并根據(jù)請(qǐng)求類型和內(nèi)容類型解析數(shù)據(jù),本文介紹了Flask請(qǐng)求數(shù)據(jù)獲取方法,需要的朋友可以參考下2025-04-04
Python基礎(chǔ)知識(shí)+結(jié)構(gòu)+數(shù)據(jù)類型
這篇文章主要介紹了Python基礎(chǔ)知識(shí)+結(jié)構(gòu)+數(shù)據(jù)類型,文章基于python基礎(chǔ)知識(shí)圍繞主題展開詳細(xì)內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05

