Python中時間元組與時間日期的使用及說明
一、時間元組(time.struct_time)
python中時間元組是一個比較重要的類型,通過時間元組我們可以獲取,年月日時分秒,星期幾,一年中的第幾天等信息。
索引 | 屬性 | 屬性含義 | 屬性取值 |
---|---|---|---|
0 | tm_year | 4位數年份 | 0000-9999 |
1 | tm_mon | 月 | 1-12 |
2 | tm_mday | 日 | 1-31 |
3 | tm_hour | 小時 | 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 | 夏令標識 | 1-夏令時,0-非夏令時 -1-不確定,可能是因為手動創(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)
二、時間格式化
時間格式化是非常常用的一個功能,不管是從字符串到struct_time、date、datetime,還是從struct_time、date、datetime到字符串都需要用到。
格式化主要涉及到2個函數:
strftime
:str表示字符串,f是format,time是時間,就是時間格式化為字符串strptime
:str表示字符串,p是parse,time是時間,就是字符串解析為時間
time和datetime都有這2個函數,后面會介紹,下面先看一下格式化的含義。
格式 | 含義 |
---|---|
%y | 兩位數的年份表示,00-99 |
%Y | 四位數的年份表示,0000-9999 |
%m | 月份,01-12 |
%d | 日期,0-31 |
%H | 24小時制小時數,0-23 |
%I | 12小時制小時數,01-12 |
%M | 分鐘,00-59 |
%S | 秒,00-59 |
%a | 本地簡化星期名稱 |
%A | 本地完整星期名稱 |
%b | 本地簡化的月份名稱 |
%B | 本地完整的月份名稱 |
%c | 本地日期表示和時間表示 |
%j | 第幾天,001-366 |
%p | 本地A.M\P.M |
%U | 第幾周,00-53,星期天為星期的開始 |
%W | 第幾周,00-53,星期一為星期的開始 |
%w | 星期幾,0-6,星期天為星期的開始 |
%x | 本地日期 |
%X | 本地時間 |
%Z | 當前時區(qū)的名稱 |
%% | %符合,因為被當做轉義字符 |
三、time
time模塊,主要處理和時間元組(struct_time)的格式化和解析。
當日也有本地化時間、獲取時間戳,程序休眠等函數。
注意和datetime.time區(qū)分,datetime.time就是一般意義上的日期時間中的時間部分,主要就是時分秒。
import time # 格林威治天文時間元組 print(time.gmtime()) print(time.gmtime(1577851199)) # 本地時間元組 print(time.localtime()) print(time.localtime(1577851199)) # 格式化時間 # 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())) # 將格式字符串轉換為時間戳 a = "2020-01-01 11:59:59" str2TT = time.strptime(a, "%Y-%m-%d %H:%M:%S") # 時間元組到時間戳 ts = time.mktime(str2TT) print(ts) # 時間戳 print(time.time()) # 休眠秒 time.sleep(1)
四、datetime
datetime模塊中主要使用的是:
datetime.date
:日期(2025-01-01)datetime.time
:時間(12:00:00)datetime.datetime
:時期(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()) # 時間元組 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模塊下的,主要是用于日期計算的。
在需要使用到時間間隔的時候非常有用,例如需要上一個月,前一天,上一周這樣的日期,就可以使用datetime和timedelta很容易得到。
import datetime import time today = datetime.date.today() # 上個月最后一天 lastMonthLastDay = datetime.date(today.year, today.month, 1) - datetime.timedelta(1) print(lastMonthLastDay) # 上個月第一天 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小時后 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是日歷
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
詳解PyCharm+QTDesigner+PyUIC使用教程
這篇文章主要介紹了詳解PyCharm+QTDesigner+PyUIC使用教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-06-06pandas數據選?。篸f[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
這篇文章主要介紹了pandas數據選?。篸f[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[],文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04python3模塊smtplib實現(xiàn)發(fā)送郵件功能
這篇文章主要為大家詳細介紹了python3模塊smtplib實現(xiàn)發(fā)送郵件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05Python報錯NameError: name ‘secrets‘ is not
在使用Python進行安全編程時,我們經常需要使用secrets模塊來生成安全的隨機數,但是卻遇到這個問題,本文主要介紹了Python報錯NameError: name ‘secrets‘ is not defined解決,感興趣的可以了解一下2024-06-06