做專案的時候,有一個簡單需求,就是取到當前時間5年后的某個時間點,這個要怎么做?
這個不是簡單的加5年時間,需要庫里有自動識別哪一年是閏年,最后回傳準確結果,
看起來簡單的需求,但因為對Python類別庫不熟悉,可能被多個時間物件搞懵!
唯一的辦法,只能把python中所有關于時間的模塊全部學習一遍,以下記錄學習的筆記,
通過學習,得出解決這個問題的方法:
from datetime import datetime from datetime import timedelta from calendar # 方法一、只需要將365*5就是五年的天數,但這里未考慮到閏年的情況 # 如果能判斷5年中哪一些是閏年再加相應天數就可以得到正確的天數總和 dt = datetime.now() td1 = timedelta(days=365*5) # 這里的365不是固定的,不能這樣寫 print(dt+td1) # 方法二、如果剛好碰上今年是閏年的2月29日,如果5年后又正好不是閏年,2月份沒有29天,那么就會報錯,所以還是要判斷閏年, d1 = date.today() print(d1.replace(year=d1.year+5)) # 方法三、可以用到calendar模塊中的isleap(year)方法,這樣就沒問題了! dt1 = datetime.now() days = 0 for i in range(dt1.year+1,dt1.year+2): # 判斷是否是閏年 if calendar.isleap(i): days += 366 else: days += 365 print(dt1 + timedelta(days=days))
以下重點內容標紅顯示
一、背景知識介紹:
1、時間是人類規定的產物,與長度單位是一個道理,米這個單位也是人類發明的,簡單說就是地球自轉1圈為1天,地球饒太陽公轉1圈為1年,而且根據公轉自轉度量時間都是不可靠的(因為非勻速無法準確度量),關鍵是找到勻速的度量工具,
歷史上時間計量的方法,比如:
-
- 太陽時:以太陽為基礎的相對于原子時不十分精準的時間
- 歷書時:描述天體運動的方程式中采用的時間﹐或天體歷表中應用的時間,已經被原子時替代,不多做討論,
- 格林威治時間標準時間(GMT):以本初子午線的平子夜起算的平太陽時,1960年以前曾作為基本時間計量系統被廣泛應用,因為地球自轉非勻速,所以并不是一個很好的時間度量系統,已經被原子時替代,但是一些原則卻被保留了下來,比如將世界分為24個時區,
- 協調世界時(UTC):這是現在主要用的時間系統,為了保證時間的勻速統一,采用原子正常衰變的時間做為基準來度量時間(具體理論不深究),由原子鐘提供原子時,然后對世界時進行糾正,在適當的實際加減秒數以達到一致,所以,在不需要精確到秒的情況下,通常將GMT 和UTC 視作等同,
- 中國屬于UTC+8區,也就是東八區,需要在UTC時間的基礎上加8小時得到北京時間,
- 夏令時:為了節約能源,人為將時鐘調快的行為,這是非普遍行為所以在程式中可以不考慮,在中國已經廢除了這個制度,如果一定要考慮這個因素可以用到tzinfo物件,因只使用簡單時間所以本文未對tzinfo物件做研究,
- ISO8601 :國際標準化組織制定的ISO8601國際標準,是日期和時間的表示方法,比如:2004-05-03T17:30:08+08:00,中間的T代表間隔符,最后的+08:00代表時差,
- 簡單型時間:不考慮時區、夏時令等因素,而僅通過運行程式所在地獲得時間的回傳值,簡單型物件更易于理解和使用,代價則是忽略了某些現實性考量,推薦使用!
- 感知型時間:考慮時區、夏時令等因素,將所有情況都考慮進去后得到矯正的時間值,其用來表示一個沒有解釋空間的固定時間點,python提供一個抽象類介面
tzinfo,通過實作其子類來完善時間,datetime模塊只提供了一個tzinfo類,即timezone類,
2、為什么要知道這些背景知識?
因為Python中出現很多關于時間的術語,比如UTC,如果一個方法回傳的是UTC時間,如果不知道以上知識,就無法對回傳值有預期,
二、Python 的時間類別庫概述:
- time模塊:包含時間的訪問和轉換函式,此模塊包含一些底層的介面,比如讓執行緒休眠的sleep(),還有提取cpu時間的方法,如果要實作更復雜時間操作,可以用到下面幾個物件,
- timedelta物件
:這是一個代表時間間隔的物件,可以對時間進行計算,還支持與date和datetime物件進行特定的相加和相減運算 - date物件:代表年、月、日的日期物件,也就是說該物件重點操作物件是年月日,忽略時分秒,兩個date物件之間,或者date物件和timedalta物件之間,可以做加減運算,可以比大小,
- time物件:代表某日的(本地)時間,它獨立于任何特定日期,并可通過
tzinfo物件來調整,(tzinfo物件涉及到時區和夏令時等概念,本文不做討論) - datetime物件:物件是包含來自
date物件和time物件的所有資訊的單一物件,意味著我們大部分情況下只需要用這個物件即可, - calendar模塊:這個模塊讓你可以輸出日歷,它還提供了其它與日歷相關的實用函式,
- 類繼承關系:
object timedelta tzinfo timezone time date datetime
三、time 模塊:包含時間的訪問和轉換功能,time模塊不同于datetime中的time物件
1、class time.struct_time:為 gmtime() 、 localtime() 和 strptime()的回傳值 ,它是帶有 named tuple 介面的物件:可以通過索引和屬性名訪問值, 存在以下值:

2、時間戳型別,形式是從 epoch 開始的秒數(浮點型 float),epoch的值可以用time.gmtime(0)查看,一般是1970年1月1日0時開始,
3、字串型別,形式是字串,這里包含了時間格式轉換成自定義格式字串的各種函式,
4、函式介紹:
-
asctime([t]):struct_time轉字串,[t]為struct_time型別,不提供此引數則默認用localtime()的值,回傳結果如:Sun Jun 2023:21:05 2020ctime([secs]):將時間戳型別轉字串,[secs]為時間戳秒數,如果不提供則默認以time.time()的值,ctime(secs)等價于asctime(localtime(secs)),回傳結果如:Sun Jun 2023:21:05 2020gmtime([secs]):將時間戳型別轉struct_time型別,注意回傳結果是UTC時間,也就是世界標準是時間,不是本地時間,如北京時間是UTC+8小時得到的,[secs]如果不提供則用time.time()的值,反向操作用calendar.timegm()localtime([secs]):同上,將時間戳型別轉struct_time型別,區別在于localtime回傳的是本地時間,比如北京時間,mktime(t):將struct_time型別轉成時間戳型別,是localtime()的逆函式,是本地時間,不是UTC時間monotonic() :回傳一個float秒數數值,且不受系統更新時間影響,即如果把系統時間改了那么用time()回傳的是修改后的時間戳秒數,因為monotonic()不是從1970-1-1開始的,這就能用來計算兩個monotonic()秒數的間隔,monotonic_ns() :同上,回傳int納秒sleep(secs):暫停執行呼叫執行緒達到給定的秒數strftime(format[, t]):struct_time型別轉字串,format字符格式化是必須要指定的(格式如下表),stuct_time不指定的話默認用localtime()的值:
< 圖2 >
-
strptime(string[, format]):字串轉struct_time型別,format 引數同上,string 和 format 都必須是字串,time() :回傳以float數表示的從 epoch 開始的秒數的時間值,epoch的值可以用gmtime(0)獲得,gmtime()和localtime()默認使用time(),前者回傳UTC時間,后者回傳本地時間,
四、timedelta模塊:這是一個代表時間間隔的物件,可以對時間進行計算
1、timedelta物件的標準化:timedelta會將輸入的值都歸結到天數上,如:timedelta(days=50,seconds=27,microseconds=10,milliseconds=29000,minutes=5,hours=8,weeks=2),將得到datetime.timedelta(days=64, seconds=29156, microseconds=10)的結果
2、支持timedelta物件物件之間的運算:

3、支持timedelta物件之間用關系運算子計算:
>>> from datetime import timedelta >>> delta1 = timedelta(seconds=57) >>> delta2 = timedelta(hours=25, seconds=2) >>> delta2 != delta1 True >>> delta2 == 5 False ########################################## >>> delta2 > delta1 True >>> delta2 > 5 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: '>' not supported between instances of 'datetime.timedelta' and 'int'
4、timedelta 物件還支持與 date 和 datetime 物件進行特定的相加和相減運算:這在下面的date模塊中介紹,
5、timedelta.total_seconds():回傳timedelta物件所表示的時間段以秒為單位的數值,
五、date模塊:代表年、月、日的日期物件,也就是說該物件重點操作物件是年月日,忽略時分秒,兩個date物件之間,或者date物件和timedalta物件之間,可以做加減運算,可以比對大、小和相等關系,
1、函式介紹:
-
today():回傳當前本地日期,比如:date.today(),回傳2020-04-14,相當于date.fromtimestamp(time.time())fromtimestamp(timestamp):回傳時間戳格式的日期字串,timestamp為時間戳,是必填引數,比如:date.fromtimestamp(time.time()),回傳:2020-04-14- fromordinal(days):回傳對應于預期格列高利歷序號的日期,傳入一個從公元1年1月1日開始計算的天數,回傳一個具體的年份,現在還沒想到應用場景,比如:date.fromordinal(2),回傳:0001-01-02,也就是公元1年1月1日,
fromisoformat(date_string):回傳一個字串日期的date物件,只支持YYYY-MM-DD格式,是date.isoformat()的逆操作方法,比如:fromisoformat(“2010-04-20”),回傳:datetime.date(2019, 12, 4)- fromisocalendar(year,week,day):回傳指定時間的日期,year為年份,week為此年份第幾個星期(值范圍:平年是1~52,閏年是1~53,閏年是52周加2天所以是53),day為此星期的星期幾(值范圍:1~7)
replace(year=self.year, month=self.month, day=self.day):替換年月日為一個新日期>>> from datetime import date >>> d = date(2002, 12, 31) >>> d.replace(day=26) datetime.date(2002, 12, 26)
timetuple():回傳struct_time型別,即time.localtime()所回傳的型別,但只有year,month,days,另外hours, minutes 和 seconds 值均為 0- toordinal():與fromordinal(days)是相對應的一對函式,回傳日期的對應的從公元1年1月1日開始的天數,比如:date(2020,4,14).toordinal(),回傳:737529
- isoweekday():回傳星期幾,1~7,0代表星期一,以此類推,比如:date(2020,4,14).isoweekday(),回傳:1
- isocalendar():回傳一個 3 元組 (ISO 年份, ISO 周序號, ISO 周日期),比如:date(2020,4,14).isocalendar(),回傳:(2020, 16, 2),代表2020年第16周第二天
- isoformat():回傳格式
YYYY-MM-DD來表示日期的字串,這是date.fromisoformat()的逆操作,比如:date.today().isoformat(),回傳:2020-04-14 ctime():回傳一個日期字串,等效于:time.ctime(time.mktime(d.timetuple())),比如:date(2002, 12, 4).ctime(),回傳:'Wed Dec 4 00:00:00 2002'- replace(year=self.year, month=self.month, day=self.day):替換年月榷訓傳一個新的date物件,
- strftime(format):回傳指定格式的時間字串,format格式如上面< 圖2 >,比如:date.today().strftime("%d/%m/%y"),回傳:'11/03/02'
2、運算:支持與timedalta物件的運算,

3、date代碼示例
-
-
# #計算距離特定事件天數的例子:
>>> import time >>> from datetime import date >>> today = date.today() >>> my_birthday = date(today.year, 6, 24) >>> if my_birthday < today: # 如果生日已經過去,則創建明年的生日 ... my_birthday = my_birthday.replace(year=today.year + 1) >>> my_birthday datetime.date(2008, 6, 24) >>> time_to_birthday = abs(my_birthday - today) >>> time_to_birthday.days 202 #明年生日距離今天的天數 -
>>> from datetime import date >>> # 輸出特定格式的日期字串,注意這里用到的縮寫格式字符 >>>print('The {1} is {0:%d}, the {2} is {0:%B}.'.format(d.today(), "day", "month")) 輸出:The day is 15, the month is April.
-
六、time物件:代表某日的(本地)時間,它獨立于任何特定日期,并可通過 tzinfo 物件來調整,(tzinfo 物件涉及到時區和夏令時等概念,本文不做討論)
1、函式介紹:
-
- 構造方法
datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0):這個物件只有時分秒和微秒,沒有年月日,tzinfo代表時區調整物件,fold代表夏時令, 類方法time.fromisoformat(time_string):回傳對應于time.isoformat()所提供的某種 time_string 格式的time,比如:>>> from datetime import time >>> time.fromisoformat('04:23:01') 回傳:datetime.time(4, 23, 1) >>> time.fromisoformat('04:23:01.000384') 回傳:datetime.time(4, 23, 1, 384) >>> time.fromisoformat('04:23:01+04:00') 回傳:datetime.time(4, 23, 1, tzinfo=datetime.timezone(datetime.timedelta(seconds=14400)))
-
物件方法
time.replace(hour=self.hour, minute=self.minute, second=self.second, microsecond=self.microsecond, tzinfo=self.tzinfo, * fold=0) :修改引數將回傳一個代表新值的time物件, - 物件方法
time.isoformat(timespec='auto'):回傳時間的字串,可以通過timespec選擇相應的部分回傳,比如:timespec='hours': 以兩個數碼的HH格式, - 物件方法
time.strftime(format):指定格式并且回傳時間字串,格式化字符參考<圖3>,
- 構造方法
2、time物件計算:time 物件支持 time 與 time 的比較,當 a 時間在 b 之前時,則認為 a 小于 b
>>>from datetime import time >>>t1 = time(1,2,4,333) >>>t2 = time(1,2,4,333) >>>if t1 == t2: >>> print("t1==t2") >>>elif t1 > t2: >>> print("t1>t2") >>>else: >>> print("t1<t2") 結果是:t1==t2
七、datetime物件:物件是包含來自 date 物件和 time 物件的所有資訊的單一物件,意味這我們只需要用這個物件即可,
1、函式介紹:
-
構造器datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0):year, month, day是必須的引數,tzinfo代表時區,fold代表夏令時,這兩者可以忽略,回傳一個datetime物件 ,比如:print(datetime(2001,1,1))類方法datetime.today():回傳當地時間的datetime物件,等價于datetime.fromtimestamp(time.time()) 和now()方法,但此方法不涉及時區,而now()可以設定時區,類方法datetime.now(tz=None):回傳當地時間的datetime物件,tz為時區未指定跟today()一樣,此方法比time.time()回傳更高精度的時間(微妙級別100萬精度),此函式可以替代,比如:today()和utcnow()datetime.now()類方法datetime.utcnow():回傳表示當前UTC時間的datetime物件,UTC時間和當地時間的區別在于時區,可以參考前文背景分析,類方法datetime.fromtimestamp(timestamp, tz=None):通過時間戳回傳datetime物件,類方法datetime.utcfromtimestamp(timestamp):通過時間戳回傳UTC時間的datetime物件,類方法datetime.fromordinal(ordinal):回傳對應于預期格列高利歷序號的datetime物件,ordinal代表從公元1年1月1日開始的int型天數,但時分秒都為0,比如:print(datetime.fromordinal(2)),回傳:0001-01-02 00:00:00類方法datetime.combine(date, time, tzinfo=self.tzinfo):回傳date物件和time物件的datetime物件,比如:>>>d1 = datetime.today() >>>print(d1.date()) 2020-04-15
>>>print(d1.time()) 14:08:41.000856 >>>d2 = datetime.today() >>>print(d2.date()) 2020-04-15
>>>print(d2.time()) 14:08:41.000856 >>>if d2 == datetime.combine(d1.date(), d1.time(), d1.tzinfo): >>> print("這兩個datetime物件相等") 結果:這兩個datetime物件相等類方法datetime.fromisoformat(date_string):從字串轉成datetime物件,字串引數可以由date.isoformat()和datetime.isoformat()來提供,比如:>>> from datetime import datetime >>> datetime.fromisoformat('2011-11-04') datetime.datetime(2011, 11, 4, 0, 0) >>> datetime.fromisoformat('2011-11-04T00:05:23') datetime.datetime(2011, 11, 4, 0, 5, 23) >>> datetime.fromisoformat('2011-11-04 00:05:23.283') datetime.datetime(2011, 11, 4, 0, 5, 23, 283000) >>> datetime.fromisoformat('2011-11-04 00:05:23.283+00:00') datetime.datetime(2011, 11, 4, 0, 5, 23, 283000, tzinfo=datetime.timezone.utc) >>> datetime.fromisoformat('2011-11-04T00:05:23+04:00') datetime.datetime(2011, 11, 4, 0, 5, 23, tzinfo=datetime.timezone(datetime.timedelta(seconds=14400)))類方法datetime.fromisocalendar(year, week, day):提供年、該年第幾個星期、該星期幾日,回傳一個datetime物件,這是函式datetime.isocalendar()的逆操作,比如:datetime.fromisocalendar(2000, 1, 1),回傳:2000-01-03 00:00:00類方法datetime.strptime(date_string, format):字串轉datetime物件,比如:>>>datetime.strptime("2001-01-01", "%Y-%m-%d") 2001-01-01 00:00:00 >>># 等價于下面的寫法,這里將time和datetime物件串聯起來了 >>>print(datetime(*(time.strptime("2001-01-01", "%Y-%m-%d")[0:6]))) 2001-01-01 00:00:00物件方法datetime.date():回傳具有同樣 year, month 和 day 值的date物件,比如:print(datetime.now().date()),回傳:2020-04-15- 物件方法
datetime.time():回傳具有同樣 hour, minute, second, microsecond 和 fold 值的time物件,比如:print(datetime.now().time()),回傳:15:52:16.589417 - 物件方法
datetime.replace(year=self.year, month=self.month, day=self.day, hour=self.hour, minute=self.minute, second=self.second, microsecond=self.microsecond, tzinfo=self.tzinfo, * fold=0):替換年月日時分秒微秒并且回傳一個新的datetime型別,需要注意的是,這個函式是會識別閏年的,如下:>>>d1 = datetime(2020,2,29) #2020年為閏年2月有29天 >>>print(d1) >>>print(datetime.replace(d1,year=d1.year+5)) #如果加5年也就是2025年不是閏年,則2月沒有29天,會報錯! 結果:ValueError: day is out of range for month
物件方法datetime.astimezone(tz=None):回傳一個新時區的datetime型別,- 物件方法
datetime.timetuple():回傳一個time.struct_time型別, - 物件方法
datetime.toordinal():回傳datetime從公元1年1月1日開始的天數,比如:print(datetime.now().toordinal()),回傳:737530 - 物件方法
datetime.timestamp():回傳datetime的時間戳 - 物件方法
datetime.isoweekday():回傳星期幾 - 物件方法
datetime.isocalendar():回傳一個 3 元組 (ISO 年份, ISO 周序號, ISO 周日期), 等同于self.date().isocalendar(), - 物件方法
datetime.isoformat():回傳ISO格式的日期UTC字串(日期和時間中間用T割開,如果不想有符號間隔可以用isoformat(" ")),d1.__str__()等價于d1.isoformat(" ")等價于str(d1) - 物件方法
datetime.ctime():回傳一個表示日期和時間的字串,比如:print(d1.ctime()),回傳:Sat Feb 29 10:02:02 2020 - 物件方法
datetime.strftime(format):回傳格式字串所指明的代表日期和時間的字串,格式字串如上圖<圖3>
2、datetime物件的計算

八、calendar物件:這個模塊讓你可以輸出日歷,它還提供了其它與日歷相關的實用函式,
1、函式介紹:
-
- 建構式
calendar.Calendar(firstweekday=0):創建一個Calendar物件, firstweekday 是一個整數,用于指定一周的第一天,0是星期一(默認值),6是星期天, - 物件方法c1.
iterweekdays():回傳一個迭代器,迭代器的內容為一星期的數字,迭代器的第一個值與firstweekday屬性的值一至, - 物件方法c1.
itermonthdates(year, month):回傳一個迭代器,迭代器的內容為 year 年 month 月(1-12)的日期,這個迭代器回傳當月的所有日期 (datetime.date物件),日期包含了本月頭尾用于組成完整一周的日期,其實就是紙質日歷完整一頁的內容 - 物件方法c1.itermonthdays(year, month):回傳一個迭代器,回傳的日期為當月每一天的日期對應的天數序號,不在當月的日期,天數序號顯示為
0,備注:完整一頁紙質日歷頭尾都有一些天數不屬于這個月,可能是上個月,也可能是下個月,這些不屬于本月的就顯示0,屬于本月的按本月第幾天排序, 物件方法c1.itermonthdays2(year, month):回傳一個迭代器,由輸出天數序號和星期幾組成的元組,格式為:(不在本月為0,星期幾),(天數序號,星期幾),(天數序號,星期幾),不在當月的日期,天數序號顯示為0,- 物件方法c1.
itermonthdays3(year, month):回傳一個迭代器,由年,月,日組成的元組,格式為:(年,月,日),(年,月,日),(年,月,日) - 物件方法c1.itermonthdays4(year, month):回傳一個迭代器,由年,月,日,星期幾組成的元組,格式為:(年,月,日,星期幾),(年,月,日,星期幾),(年,月,日,星期幾)
- 物件方法c1.monthdatescalendar(year, month):回傳一個表示指定年月的周串列,周串列由七個
datetime.date物件組成,格式為:[datetime.date(2020, 3, 30), datetime.date(2020, 3, 31), datetime.date(2020, 4, 1)...] - 物件方法c1.monthdays2calendar(year, month):回傳一個表示指定年月的周串列,周串列由七個代表日期的數字和代表周幾的數字組成的二元元組,格式如下:
import calendar cal = calendar.Calendar(firstweekday=0) for i in cal.monthdays2calendar(year=2020,month=4): print(i) 輸出如下:列印了一個日歷格式,X軸代表星期幾 [(0, 0), (0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)] [(6, 0), (7, 1), (8, 2), (9, 3), (10, 4), (11, 5), (12, 6)] [(13, 0), (14, 1), (15, 2), (16, 3), (17, 4), (18, 5), (19, 6)] [(20, 0), (21, 1), (22, 2), (23, 3), (24, 4), (25, 5), (26, 6)] [(27, 0), (28, 1), (29, 2), (30, 3), (0, 4), (0, 5), (0, 6)]
- 物件方法c1.monthdayscalendar(year, month):回傳一個表示指定年月的周串列,周串列由七個代表日期的數字組成,格式如下:
import calendar cal = calendar.Calendar(firstweekday=0) for i in cal.monthdayscalendar(year=2020,month=4): print(i) 輸出如下: [0, 0, 1, 2, 3, 4, 5] [6, 7, 8, 9, 10, 11, 12] [13, 14, 15, 16, 17, 18, 19] [20, 21, 22, 23, 24, 25, 26] [27, 28, 29, 30, 0, 0, 0]
- 物件方法c1.yeardatescalendar(year, width=3):回傳一個年串列,里面最小的元素是date型別代表天,由天組成星期串列->由星期串列組成月串列->由月串列組成年串列->最后回傳,width=3代表月份串列有幾個月組成,默認3個月組成一個月份串列
- 物件方法c1.yeardays2calendar(year, width=3):回傳一個年串列,里面最小的元素是天序號和星期幾組成的元組,由元組組成星期串列->由星期串列組成月串列->由月串列組成年串列->最后回傳,width=3的含義同上,
- 物件方法c1.yeardayscalendar(year, width=3):回傳一個串列,里面最小的元素是天數序號(非本月日期標識為0),由天序號組成星期串列->由星期串列組成月串列->由月串列組成年串列->最后回傳,width=3的含義同上,
- 類方法
calendar.TextCalendar(firstweekday=0):回傳一個TextCalendar物件,可以使用這個類生成純文本日歷,詳情參考:https://docs.python.org/zh-cn/3/library/calendar.html#calendar.TextCalendar - 類方法
calendar.HTMLCalendar(firstweekday=0):回傳一個HTMLCalendar物件,可以使用這個類生成 HTML 日歷,,詳情參考:https://docs.python.org/zh-cn/3/library/calendar.html#calendar.HTMLCalendar 類方法calendar.isleap(year):回傳一個bool值,可用來判斷是否是閏年,- 類方法
calendar.leapdays(y1, y2):回傳y1,y2之間的閏年的年數, 類方法calendar.weekday(year, month, day):回傳某年某月某日是星期幾,結果要加1用來表示中文星期幾,類方法calendar.weekheader(n):回傳一個包含星期幾的縮寫名的頭, n 指定星期幾縮寫的字符寬度類方法calendar.c(year, month):回傳第一天是星期幾和這個月的天數的元組,- 類方法
calendar.monthcalendar(year, month):回傳表示一個月的日歷的矩陣,每一行代表一周;此月份外的日子由零表示, - 類方法
calendar.prmonth(theyear, themonth, w=0, l=0):列印由month()回傳的一個月的日歷, 類方法calendar.month(theyear, themonth, w=0, l=0):回傳月份日歷,使用TextCalendar類的formatmonth()以多行字串形式,類方法calendar.prcal(year, w=0, l=0, c=6, m=3):回傳整年日歷,類方法calendar.timegm(tuple):回傳時間戳,引數是struct_time型別,他是time.gmtime()的逆函式,- 類屬性calendar.day_name:回傳陣列,在當前語言環境下表示星期幾的陣列,
- 類屬性calendar.day_abbr:回傳陣列,在當前語言環境下表示星期幾縮寫的陣列,
- 類屬性calendar.month_name:回傳陣列,在當前語言環境下表示一年中月份的陣列,
- 類屬性calendar.month_abbr:回傳陣列,在當前語言環境下表示一年中月份縮寫的陣列
- 建構式
[參考資料]
協調世界時:https://baike.baidu.com/item/%E5%8D%8F%E8%B0%83%E4%B8%96%E7%95%8C%E6%97%B6/787659?fr=aladdin
ISO 8601時間格式:https://baike.baidu.com/item/ISO%208601/3910715?fr=aladdin
Python的time模塊:https://docs.python.org/zh-cn/3/library/time.html
Python的datetime模塊:https://docs.python.org/zh-cn/3/library/datetime.html
Python的calendar模塊:https://docs.python.org/zh-cn/3/library/calendar.html#module-calendar
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/158286.html
標籤:Python
上一篇:Python練習題2.5求奇數分之一序列前N項和(存在問題)
下一篇:密碼類
