Python模組知識2:時間日期日曆模組Time、Datetime、Calendar
1、time模組
時間為什麼從1970年開始:因為Linux系統那一年開始使用;通常由以下幾種方式表示時間:
時間戳:1970年1月1日之後的秒,即:time.time()可以獲得當前時間戳。
格式化的字串:2014-11-11 11:11,如:time.strftime('%Y-%m-%d'),詳見案例
結構化時間,為元組形式,包含了9個元素:年、日、星期等... 如:time.struct_time(tm_year=2017, tm_mon=5, tm_mday=27, tm_hour=15, tm_min=16, tm_sec=53, tm_wday=5, tm_yday=147, tm_isdst=0) ;
常見用法:
time.time() 返回當前時間的時間戳
time.ctime() 返回時間的字串格式,如:Sat Dec 30 16:52:39 2017
time.gmtime() 返回結構化時間格式,為格林威治時間
time.localtime() 本地時間,比如中國時間和格林威治時間不一致,形式為結構化格式,
time.mktime() 把結構化時間轉化為時間戳
time.sleep() 時間停頓
time.strftime() 把結構化時間轉為格式化字元
time.strptime() 把一個時間字串解析為時間元組
案例1:time.time返回當前時間的時間戳
案例2:time.ctime返回時間的字串格式
案例3:time.gmtime()返回結構化時間格式,為格林威治時間,和本地時間有差異
案例4:結構化時間應用案例,可以分別獲取每一個元素,然後設定為不同的格式
案例5:time.localtime()本地時間,形式為結構化格式,和格林威治時間有差異,差時區
案例6:time.mktime()把結構化時間轉化為時間戳
案例7:time.sleep()時間停頓
案例8:time.strftime()把結構化時間轉為格式化字元
strftime需要兩個引數,第一個是格式,有大小寫要求,第二個是結構化時間。如果t未指定,將傳入time.localtime()。如果元組中任何一個元素越界,ValueError的錯誤將會被丟擲。
python中時間日期格式化符號:
%y 兩位數的年份表示(00-99)
%Y 四位數的年份表示(000-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 星期(0-6),星期天為星期的開始
%W 一年中的星期數(00-53)星期一為星期的開始
%x 本地相應的日期表示
%X 本地相應的時間表示
%Z 當前時區的名稱
%% %號本身
案例9:time.strptime把其他格式轉為結構化格式
2、datetime模組
常用模組:
datetime.date.today()獲取當前日期
datetime.date.fromtimestamp()將時間戳轉為日期格式
datetime.datetime.now() 返回當前日期和時間,格式為2017-04-20 11:19:59.128461
timetuple() 轉為struct_time
replace() 替換部分資料,replae(yyyy,mm,dd)
案例10:datetime.date.today()獲取當前日期
案例11:將時間戳轉為日期格式
案例12:datetime.datetime.now() 返回當前日期和時間
案例13:timetuple() 轉為struct_time
案例14:replace() 替換部分資料,replae(yyyy,mm,dd)
案例15:strptime() 字串格式化
案例16:時間加減法
3、Calendar模組
例如列印某月的字元月曆。
星期一是預設的每週第一天,星期天是預設的最後一天。更改設定需呼叫calendar.setfirstweekday()函式。
常用屬性:
calendar.calendar(year,w=2,l=1,c=6)。列印日曆。
calendar.firstweekday( ) 返回當前每週起始日期的設定。預設情況下,首次載入caendar模組時返回0,即星期一。
calendar.isleap(year),判斷年是否為閏年
calendar.leapdays(y1,y2) 返回在Y1,Y2兩年之間的閏年總數
calendar.monthcalendar(year,month)返回單層巢狀列表。每個子列表為一週數字。Year年month月外的日期都設為0;範圍內的日子都由該月第幾日表示,從1開始。
calendar.monthrange(year,month)返回兩個整數。第一個數為該月第一個日期的日期碼,週一為0,從z第二個至為當月日期數。
calendar.setfirstweekday(weekday) 設定每週的起始日期碼。0(星期一)到6(星期日)。
calendar.timegm(tupletime)和time.gmtime相反:接受一個時間元組形式,返回該時刻的時間戳
calendar.weekday(year,month,day)返回給定日期的日期碼。0(星期一)到6(星期日)。月份為 1(一月) 到 12(12月)。
案例17:列印日曆:
返回一個多行年曆,3個月一行,間隔距離為c。 每日寬度間隔為w字元。每行長度為21* W+18+2* C。l是每星期行數。
案例18:calendar.firstweekday( ) ,返回預設起始位置
案例19:calendar.isleap(year),判斷年是否為閏年
案例20:calendar.leapdays(y1,y2) 返回在Y1,Y2兩年之間的閏年總數
案例21:列印當月日曆calendar.month(year,month,w=2,l=1)
案例22:calendar.monthcalendar(year,month)返回一個整數的單層巢狀列表
案例23:calendar.monthrange(year,month)返回兩個整數。第一個數為該月第一個日期的日期碼,第二個至為當月日期數。
案例連結:https://pan.baidu.com/s/1o7JgBwu 密碼:mf8r