python 中的time、calendar、datetime模組的相關介紹以及使用
阿新 • • 發佈:2018-12-22
隨意轉換日期形式在實際開發中也是一種不可或缺的能力,所以在這裡我想要介紹下和日期有關的模組介紹。
一、time模組
#引入time模組
import time
now_time = time.time()#當前的時間戳
輸出是時間戳的形式,得出的結果適合做日期運算。但是1970年之前的日期就無法以此表示了。太遙遠的日期也不行,UNIX和Windows只支援到2038年。
獲取當前的時間
把浮點形式的時間戳轉換為時間元組的形式,只需要通過localtime函式進行轉換即可
import time
localtime = time.localtime(time.time())
輸出的結果如下 :
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=7, tm_hour=10, tm_min=3, tm_sec=27, tm_wday=3, tm_yday=98, tm_isdst=0)
獲取格式化時間
最簡單的獲取可讀的時間模式的函式是asctime():
import time
localtime = time.asctime( time.localtime(time.time()) )
輸出的結果如下:
Thu Apr 7 10:05:21 2018
獲取格式化日期
import time # 格式化成2016-03-20 11:45:39形式 print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 格式化成Sat Mar 28 22:24:24 2016形式 print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()) # 將格式字串轉換為時間戳 a = "Sat Mar 28 22:24:24 2016" print time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))
輸出的結果如下:
2016-04-07 10:25:09 Thu Apr 07 10:25:09 2016 1459175064.0
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 當前時區的名稱
- %% %號本身
time.clock( ) 用以浮點數計算的秒數返回當前的CPU時間。用來衡量不同程式的耗時,比time.time()更有用。 |
二、calendar模組
列印某個月的日曆
import calendar
cal = calendar.month(2018, 1)
print "以下輸出2018年1月份的日曆:"
print cal
此模組的函式都是日曆相關的,例如列印某月的字元月曆。
星期一是預設的每週第一天,星期天是預設的最後一天。更改設定需呼叫calendar.setfirstweekday()函式。模組包含了以下內建函式:
序號 | 函式及描述 |
---|---|
1 | calendar.calendar(year,w=2,l=1,c=6) 返回一個多行字串格式的year年年曆,3個月一行,間隔距離為c。 每日寬度間隔為w字元。每行長度為21* W+18+2* C。l是每星期行數。 |
2 | calendar.firstweekday( ) 返回當前每週起始日期的設定。預設情況下,首次載入caendar模組時返回0,即星期一。 |
3 | calendar.isleap(year)
是閏年返回 True,否則為 False。 >>> import calendar >>> print(calendar.isleap(2000)) True >>> print(calendar.isleap(1900)) False |
4 | calendar.leapdays(y1,y2) 返回在Y1,Y2兩年之間的閏年總數。 |
5 | calendar.month(year,month,w=2,l=1) 返回一個多行字串格式的year年month月日曆,兩行標題,一週一行。每日寬度間隔為w字元。每行的長度為7* w+6。l是每星期的行數。 |
6 | calendar.monthcalendar(year,month) 返回一個整數的單層巢狀列表。每個子列表裝載代表一個星期的整數。Year年month月外的日期都設為0;範圍內的日子都由該月第幾日表示,從1開始。 |
7 | calendar.monthrange(year,month) 返回兩個整數。第一個是該月的星期幾的日期碼,第二個是該月的日期碼。日從0(星期一)到6(星期日);月從1到12。 |
8 | calendar.prcal(year,w=2,l=1,c=6) 相當於 print calendar.calendar(year,w,l,c). |
9 | calendar.prmonth(year,month,w=2,l=1) 相當於 print calendar.calendar(year,w,l,c)。 |
10 | calendar.setfirstweekday(weekday) 設定每週的起始日期碼。0(星期一)到6(星期日)。 |
11 | calendar.timegm(tupletime) 和time.gmtime相反:接受一個時間元組形式,返回該時刻的時間戳(1970紀元後經過的浮點秒數)。 |
12 | calendar.weekday(year,month,day) 返回給定日期的日期碼。0(星期一)到6(星期日)。月份為 1(一月) 到 12(12月) |
三、datetime模組
import datetime
i = datetime.datetime.now()
print ("當前的日期和時間是 %s" % i)
print ("ISO格式的日期和時間是 %s" % i.isoformat() )
print ("當前的年份是 %s" %i.year)
print ("當前的月份是 %s" %i.month)
print ("當前的日期是 %s" %i.day)
print ("dd/mm/yyyy 格式是 %s/%s/%s" % (i.day, i.month, i.year) )
print ("當前小時是 %s" %i.hour)
print ("當前分鐘是 %s" %i.minute)
print ("當前秒是 %s" %i.second)
在當前開發中我對模組datetime的使用如下:
datetime.datetime.now()#當前的日期和時間
datetime.datetime.now().date()#當前日期
datetime.datetime.now().time()#當前時間
datetime.datetime.now().weekday()#當前是周幾(從0到6)
datetime.date(*map(int,'2018-11-18'.split('-'))).weekay()#日期是字串的時候先轉換為日期然後在得出是周幾
datetime.datetime.now().date()-datetime.timedelta(days=3)#當前日期減去三天