做項目的時候,有一個簡單需求,就是取到當前時間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