學習筆記、Python 的時間操作:time,datetime,timedelta,calendar

 

 

學習筆記、Py的時間操作:time,datetime,timedelta,calendar

 

做項目的時候,有一個簡單需求,就是取到當前時間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模塊:這個模塊讓你可以輸出日曆,它還提供了其它與日曆相關的實用函數。
  • 類繼承關係:

學習筆記、Py的時間操作:time,datetime,timedelta,calendar

 

三、time 模塊:包含時間的訪問和轉換功能,time模塊不同於datetime中的time對象

  1、class time.struct_time:爲 gmtime() 、 localtime() 和 strptime()的返回值 。它是帶有 named tuple 接口的對象:可以通過索引和屬性名訪問值。 存在以下值:    

        

學習筆記、Py的時間操作:time,datetime,timedelta,calendar

 

  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 2020
  • ctime([secs]):將時間戳類型轉字符串,[secs]爲時間戳秒數,如果不提供則默認以time.time()的值,ctime(secs)等價於asctime(localtime(secs)),返回結果如:Sun Jun 2023:21:05 2020
  • gmtime([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()的值:           

學習筆記、Py的時間操作:time,datetime,timedelta,calendar

圖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對象對象之間的運算:

    

學習筆記、Py的時間操作:time,datetime,timedelta,calendar

 

  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對象的運算。

  

學習筆記、Py的時間操作:time,datetime,timedelta,calendar

 

  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對象的計算

學習筆記、Py的時間操作:time,datetime,timedelta,calendar

 

八、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對象,可以使用這個
  • 類方法calendar.HTMLCalendar(firstweekday=0):返回一個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:返回數組,在當前語言環境下表示一年中月份縮寫的數組

你值得擁有的學習資料來l

1.Python基礎語法以及流程控制語句

學習筆記、Py的時間操作:time,datetime,timedelta,calendar

 

2.Python基礎編程

學習筆記、Py的時間操作:time,datetime,timedelta,calendar

 

3.Python電子書大全(僅展示部分資料)

學習筆記、Py的時間操作:time,datetime,timedelta,calendar

 

文章到此結束了,希望對大家有幫助,喜歡的記得關注一下小生,點贊收藏奧。還有小生把這些學習資料都已整理完畢,需要的小夥伴私信“學習”即可獲得獲取方式。感謝大家的閱讀 ,記得關注轉發收藏奧!小生歡迎大家經常來喝茶奧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章