1. 程式人生 > >Python模組知識2:時間日期日曆模組Time、Datetime、Calendar

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返回當前時間的時間戳

0?wx_fmt=png

案例2:time.ctime返回時間的字串格式

0?wx_fmt=png

案例3:time.gmtime()返回結構化時間格式,為格林威治時間,和本地時間有差異

0?wx_fmt=png

0?wx_fmt=png

案例4:結構化時間應用案例,可以分別獲取每一個元素,然後設定為不同的格式

0?wx_fmt=png

案例5:time.localtime()本地時間,形式為結構化格式,和格林威治時間有差異,差時區

0?wx_fmt=png

案例6:time.mktime()把結構化時間轉化為時間戳

0?wx_fmt=png

案例7:time.sleep()時間停頓

0?wx_fmt=png

案例8:time.strftime()把結構化時間轉為格式化字元

strftime需要兩個引數,第一個是格式,有大小寫要求,第二個是結構化時間。如果t未指定,將傳入time.localtime()。如果元組中任何一個元素越界,ValueError的錯誤將會被丟擲。

0?wx_fmt=png

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把其他格式轉為結構化格式

0?wx_fmt=png

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()獲取當前日期

0?wx_fmt=png

案例11:將時間戳轉為日期格式

0?wx_fmt=png

案例12:datetime.datetime.now() 返回當前日期和時間

0?wx_fmt=png

案例13:timetuple() 轉為struct_time

0?wx_fmt=png

案例14:replace() 替換部分資料,replae(yyyy,mm,dd)

0?wx_fmt=png

案例15:strptime() 字串格式化

0?wx_fmt=png

案例16:時間加減法

0?wx_fmt=png

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是每星期行數。

0?wx_fmt=png

0?wx_fmt=png

案例18:calendar.firstweekday( ) ,返回預設起始位置

0?wx_fmt=png

案例19:calendar.isleap(year),判斷年是否為閏年

0?wx_fmt=png

案例20:calendar.leapdays(y1,y2) 返回在Y1,Y2兩年之間的閏年總數

0?wx_fmt=png

案例21:列印當月日曆calendar.month(year,month,w=2,l=1)

0?wx_fmt=png

案例22:calendar.monthcalendar(year,month)返回一個整數的單層巢狀列表

0?wx_fmt=png

案例23:calendar.monthrange(year,month)返回兩個整數。第一個數為該月第一個日期的日期碼,第二個至為當月日期數。  

0?wx_fmt=png

案例連結:https://pan.baidu.com/s/1o7JgBwu 密碼:mf8r