1. 程式人生 > >python 中的time、calendar、datetime模組的相關介紹以及使用

python 中的time、calendar、datetime模組的相關介紹以及使用

  隨意轉換日期形式在實際開發中也是一種不可或缺的能力,所以在這裡我想要介紹下和日期有關的模組介紹。

一、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)#當前日期減去三天