1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        【萬(wàn)字長(zhǎng)文】詳解Python時(shí)間處理模塊-datetime

        共 2084字,需瀏覽 5分鐘

         ·

        2021-10-30 14:31

        datetime模塊提供了用于處理日期和時(shí)間的類和對(duì)應(yīng)的方法,一般用于處理年、月、日、時(shí)、分、秒的統(tǒng)計(jì)和計(jì)算等需求。在支持日期時(shí)間數(shù)學(xué)運(yùn)算的同時(shí),實(shí)現(xiàn)的關(guān)注點(diǎn)更著重于如何能夠更有效地解析其屬性用于格式化輸出和數(shù)據(jù)操作。

        學(xué)習(xí)該模塊,首先要有一個(gè)概念:日期和時(shí)間,要不然會(huì)混亂,這里進(jìn)行狹義的理解即可:日期是日期,時(shí)間是時(shí)間,日常生活中有時(shí)候并沒(méi)有很好的去區(qū)分。

        日期:年月日,如 20210612
        時(shí)間:時(shí)分秒,如 20:45:50
        Python標(biāo)準(zhǔn)庫(kù)中包含日期(date)和時(shí)間(time)的數(shù)據(jù)類型,還有日歷方面的功能。要比較系統(tǒng)的學(xué)習(xí)該模塊,需要了解下面的兩個(gè)概念。
        UTC(全球標(biāo)準(zhǔn)時(shí)間):是全球范圍內(nèi)計(jì)時(shí)的科學(xué)標(biāo)準(zhǔn),它基于精心維護(hù)的原子鐘,在全球范圍內(nèi)精確到微秒,由于英文(CUT)和法文(TUC)的縮寫(xiě)不同,作為妥協(xié),簡(jiǎn)稱UTC。作為全球最精確的時(shí)間系統(tǒng),天文學(xué)家、航海家、“太空跟蹤網(wǎng)”(DSN) 以及其他科學(xué)性學(xué)科都使用它,它的參考點(diǎn)是英國(guó)格林威治標(biāo)準(zhǔn)時(shí)間(GMT):地球本初子午線的午夜,也是 UTC 的午夜 (00:00:00.000000)。本地時(shí)間是根據(jù)地球上不同時(shí)區(qū)所處的位置調(diào)整 UTC 得來(lái)的,比如當(dāng)美國(guó)加州的太平洋時(shí)間為正午 12:00:00 時(shí),UTC 為 20:00:00。
        夏令時(shí)(DST):表示為了節(jié)約能源, 人為規(guī)定時(shí)間的意思。也叫夏時(shí)制,夏時(shí)令(Daylight Saving Time:DST),又稱"日光節(jié)約時(shí)制"和"夏令時(shí)間”,在這一制度實(shí)行期間所采用的統(tǒng)一時(shí)間稱為“夏令時(shí)間”。一般在天亮早的夏季人為將時(shí)間調(diào)快一小時(shí),可以使人早起早睡,減少照明量,以充分利用光照資源,從而節(jié)約照明用電。各個(gè)采納夏時(shí)制的國(guó)家具體規(guī)定不同。全世界有近110個(gè)國(guó)家每年要實(shí)行夏令時(shí)。
        感知型”和“簡(jiǎn)單型”對(duì)象:日期和時(shí)間對(duì)象可以根據(jù)它們是否包含時(shí)區(qū)信息而分為“感知型”和“簡(jiǎn)單型”兩類。充分掌握應(yīng)用性算法和政治性時(shí)間調(diào)整信息例如時(shí)區(qū)和夏令時(shí)的情況下,一個(gè)?感知型?對(duì)象就能相對(duì)于其他感知型對(duì)象來(lái)精確定位自身時(shí)間點(diǎn)。感知型對(duì)象是用來(lái)表示一個(gè)沒(méi)有解釋空間的固定時(shí)間點(diǎn)。簡(jiǎn)單型對(duì)象沒(méi)有包含足夠多的信息來(lái)無(wú)歧義地相對(duì)于其他 date/time 對(duì)象來(lái)定位自身時(shí)間點(diǎn)。
        時(shí)間戳:Unix時(shí)間戳是從1970年1月1日(UTC/GMT的午夜)開(kāi)始所經(jīng)過(guò)的秒數(shù),不考慮閏秒。Unix時(shí)間戳(英文為Unix epoch, Unix time, POSIX time 或 Unix timestamp)
        import?time?time.time()?1625483470.3409266

        一、datetime模塊概
        Python內(nèi)置的時(shí)間模塊datetime包含下面的模塊包含六個(gè)類和兩個(gè)常數(shù),提供了用于處理日期和時(shí)間的類和對(duì)應(yīng)的方法,一般用于處理年、月、日、時(shí)、分、秒的統(tǒng)計(jì)和計(jì)算等需求,且這些類型的對(duì)象都是不可變的。最常用的是datetime.datetime,有些人誤以為就一個(gè)模塊,其實(shí)是datetime模塊下的datetime類。

        常量、類或方法名
        注解
        datetime.date
        一個(gè)理想化的簡(jiǎn)單型日期,它假設(shè)當(dāng)今的公歷在過(guò)去和未來(lái)永遠(yuǎn)有效。屬性包含: year, month, day。
        datetime.time
        一個(gè)獨(dú)立于任何特定日期的理想化時(shí)間,它假設(shè)每一天都恰好等于 24*60*60 秒。這里沒(méi)有“閏秒”的概念) 包含屬性:hour、minute、second、microsecond 、tzinfo。
        datetime.datetime
        是日期和時(shí)間的結(jié)合,屬性包含year、month、day、hour、minute、second、?microsecond、?tzinfo.表示日期時(shí)間
        datetime.timedelta
        表示兩個(gè) date 對(duì)象或者 time 對(duì)象,或者 datetime 對(duì)象之間的時(shí)間間隔,精確到微秒。
        datetime.tzinfo
        一個(gè)描述時(shí)區(qū)信息對(duì)象的抽象基類。用來(lái)給datetime和time類提供自定義的時(shí)間調(diào)整概念(例如處理時(shí)區(qū)和/或夏令時(shí))。
        datetime.timezone
        一個(gè)實(shí)現(xiàn)了tzinfo抽象基類的子類,用于表示相對(duì)于世界標(biāo)準(zhǔn)時(shí)間(UTC)的偏移量。
        datetime.MINYEAR
        常量,表示年份允許的最小值為1
        datetime.MAXYEAR
        常量,表示年份允許的最大值為9999
        書(shū)接上回,接著寫(xiě)

        二、datetime.date類

        1、date類介紹

        作用:date類用來(lái)處理日期信息
        語(yǔ)法:date類是datetime的內(nèi)嵌類,實(shí)例化語(yǔ)法:datetime.date(year,?month,?day)
        參數(shù):year年份、month月份及day日期,所有參數(shù)都是必要的, 參數(shù)必須是在下面范圍內(nèi)的整數(shù)
        MINYEAR?<=?year?<=?MAXYEAR
        1?<=?month?<=?12
        1?<=?day<=?給定年月對(duì)應(yīng)的天數(shù)
        如果參數(shù)不在這些范圍內(nèi),則拋出 ValueError 異常。
        import?datetimet?=?datetime.date(2019,8,26)print(type(t))print(t.day,t.month,t.year)?#?26?8?2019
        通過(guò)內(nèi)置函數(shù)dir,可以查看date類的所有方法和屬性
        from?datetime?import?dateprint(dir(date))['ctime',?'day',?'fromisocalendar',?'fromisoformat',?'fromordinal',?'fromtimestamp',?'isocalendar',?'isoformat',?'isoweekday',?'max',?'min',?'month',?'replace',?'resolution',?'strftime',?'timetuple',?'today',?'toordinal',?'weekday',?'year']
        ?

        2、類方法

        date.today()

        作用:返回當(dāng)前的本地日期,等價(jià)于date.fromtimestamp(time.time())。
        from?datetime?import?date?date.today()datetime.date(2021,?7,?4)

        date.fromtimestamp()

        作用:返回對(duì)應(yīng)于POSIX時(shí)間戳的當(dāng)?shù)貢r(shí)間,例如 time.time()?返回的就是時(shí)間戳。這可能引發(fā) OverflowError,如果時(shí)間戳數(shù)值超出所在平臺(tái) C localtime()?函數(shù)的支持范圍的話,并且會(huì)在 localtime()?出錯(cuò)時(shí)引發(fā) OSError。通常該數(shù)值會(huì)被限制在 1970 年至 2038 年之間。請(qǐng)注意在時(shí)間戳概念包含閏秒的非 POSIX 系統(tǒng)上,閏秒會(huì)被 fromtimestamp()?所忽略。
        在 3.3 版更改:?引發(fā) OverflowError 而不是 ValueError,如果時(shí)間戳數(shù)值超出所在平臺(tái) C localtime()?函數(shù)的支持范圍的話,并會(huì)在 localtime()?出錯(cuò)時(shí)引發(fā) OSError 而不是 ValueError。
        用法:date.fromtimestamp(timestamp)
        from?datetime?import?datedate.fromtimestamp(1339119900000/1e3).strftime('%Y-%m-%d?%H:%M')'2012-06-07?00:00'date.fromtimestamp(1339120800000/1e3).strftime('%Y-%m-%d?%H:%M')'2012-06-07?00:00'
        注意: unix時(shí)間戳是從1970年1月1日(UTC/GMT的午夜)開(kāi)始所經(jīng)過(guò)的秒數(shù),不考慮閏秒。
        ?

        date.fromordinal()

        作用:返回對(duì)應(yīng)于預(yù)期格列高利歷序號(hào)的日期,其中公元 1 年 1 月 1 晶的序號(hào)為 1。
        用法:date.fromordinal(ordinal)
        from?datetime?import?dated?=?date.fromordinal(730920)?#?730920th?day?after?1.?1.?0001ddatetime.date(2002,?3,?11)
        ?

        date.fromisoformat()

        作用:返回一個(gè)對(duì)應(yīng)于以?YYYY-MM-DD?格式給出的?date_string?的?date?對(duì)象
        用法:date.fromisoformat(date_string)
        from?datetime?import?datedate.fromisoformat('2019-12-04')datetime.date(2019,?12,?4)
        這是 date.isoformat()?的逆操作。它只支持 YYYY-MM-DD 格式。更通用的要用strptime
        d.isoformat()'2002-03-11'

        date.fromisocalendar()

        作用:返回指定 year, week 和 day 所對(duì)應(yīng) ISO 歷法日期的 date。這是函數(shù) date.isocalendar()?的逆操作。
        用法:date.fromisocalendar(year,?week,?day)
        今年的42周第三天是10月20號(hào)
        date.fromisocalendar(2021,?42,?3)datetime.date(2021,?10,?20)
        ?
        3、類屬性

        date.min

        最小的日期 date(MINYEAR, 1, 1)?。
        from?datetime?import?datedate.mindatetime.date(1,?1,?1)

        date.max

        最大的日期 ,date(MAXYEAR, 12, 31)。
        from datetime import datedate.maxdatetime.date(9999, 12, 31)

        date.resolution

        兩個(gè)日期對(duì)象的最小間隔,timedelta(days=1)。
        from datetime import datedate.resolutiondatetime.timedelta(days=1)

        date.year

        在 MINYEAR 和 MAXYEAR 之間,包含邊界
        from datetime import date d = date.today()#生成一個(gè)date對(duì)象ddatetime.date(2021, 7, 5)d.year2021

        date.month

        1 至 12(含)
        #接上述案例d.month7

        date.day

        返回1到指定年月的天數(shù)間的數(shù)字。
        #接上述案例d.day5
        ?

        3、實(shí)例方法

        date.replace()

        作用:返回一個(gè)具有同樣值的日期,除非通過(guò)任何關(guān)鍵字參數(shù)給出了某些形參的新值。
        用法:date.replace(year=self.year,?month=self.month,?day=self.day)
        from?datetime?import?dated = date(2002, 12, 31)d.replace(day=26)datetime.date(2002, 12, 26)

        date.timetuple()

        作用:返回一個(gè) time.struct_time,即 time.localtime()?所返回的類型。hours, minutes 和 seconds 值均為 0,且 DST 旗標(biāo)值為 -1。
        用法:date.timetuple(d)
        d?=?date(2002,?12,?31)date.timetuple(d)time.struct_time(tm_year=2002, tm_mon=12, tm_mday=31, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=365, tm_isdst=-1)

        date.toordinal()

        作用:返回日期的預(yù)期格列高利歷序號(hào),其中公元 1 年 1 月 1 日的序號(hào)為 1。對(duì)于任意 date 對(duì)象 d,date.fromordinal(d.toordinal())?== d。
        d = date(1, 1, 1)d.toordinal()1d = date(2002, 12, 31)d.toordinal()731215date.fromordinal(d.toordinal())datetime.date(2002, 12, 31)
        ?

        date.weekday()

        作用:返回一個(gè)整數(shù)代表星期幾,星期一為0,星期天為6。
        date(2002,?12,?4).weekday()2

        date.isoweekday()

        作用:返回一個(gè)整數(shù)代表星期幾,星期一為1,星期天為7。
        date(2002,?12,?4).isoweekday()3

        date.isocalendar()

        作用:返回一個(gè)由三部分組成的 named tuple 對(duì)象: year, week 和 weekday。
        ISO 歷法是一種被廣泛使用的格列高利歷。ISO 年由 52 或 53 個(gè)完整星期構(gòu)成,每個(gè)星期開(kāi)始于星期一結(jié)束于星期日。一個(gè) ISO 年的第一個(gè)星期就是(格列高利)歷法的一年中第一個(gè)包含星期四的星期。這被稱為 1 號(hào)星期,這個(gè)星期四所在的 ISO 年與其所在的格列高利年相同。
        例如,2004 年的第一天是星期四,因此 ISO 2004 年的第一個(gè)星期開(kāi)始于 2003 年 12 月 29 日星期一,結(jié)束于 2004 年 1 月 4 日星期日.
        from datetime import datedate(2003, 12, 29).isocalendar()(2004, 1, 1) # 舊版本datetime.IsoCalendarDate(year=2004,?week=1,?weekday=1)?#?新版本date(2004, 1, 4).isocalendar()datetime.IsoCalendarDate(year=2004,?week=1,?weekday=7)
        在 3.9 版更改:?結(jié)果由元組改為 named tuple。
        ?

        date.isoformat()

        作用:返回一個(gè)以 ISO 8601 格式?YYYY-MM-DD?來(lái)表示日期的字符串
        用法:date.isoformat(d)
        from?datetime?import?datedate(2021,?10,?1).isoformat()'2021-10-01'
        這是 date.fromisoformat()?的逆操作。
        ?

        date.__str__()

        作用:對(duì)于日期對(duì)象 d, str(d)?等價(jià)于 d.isoformat()?。
        用法:date.__str__(d)
        from datetime import datedate(2021, 10, 1).__str__()'2021-10-01'str(date(2021, 10, 1))'2021-10-01'
        ?

        date.ctime()

        作用:返回一個(gè)表示日期的字符串,在原生 C ctime()?函數(shù) (time.ctime()?會(huì)發(fā)起調(diào)用該函數(shù),但 date.ctime()?則不會(huì)) 遵循 C 標(biāo)準(zhǔn)的平臺(tái)上。
        from datetime import datedate(2021,?10,?1).ctime()'Fri?Oct??1?00:00:00?2021'
        d.ctime()?等效于 time.ctime(time.mktime(d.timetuple()))
        d=date(2021, 10, 1)import timetime.ctime(time.mktime(d.timetuple()))'Fri?Oct??1?00:00:00?2021'

        date.strftime()

        作用:翻譯下就是 str from time,將給定格式的日期時(shí)間對(duì)象轉(zhuǎn)換為字符串。日期時(shí)間對(duì)象=>字符串,控制日期時(shí)間對(duì)象的輸出格式,date、datetime、time對(duì)象都支持strftime(format)?方法,可用來(lái)創(chuàng)建由一個(gè)顯式格式字符串所控制的表示時(shí)間的字符串。要獲取格式指令的完整列表,查看文末列表。
        用法:date.strftime(format)
        掌握了這個(gè)方法,隨心所以的轉(zhuǎn)換日期格式
        import?datetimedt=datetime.date(2021, 10, 1)#創(chuàng)建一個(gè)日期對(duì)象dt.strftime("%Y-%m-%d")'2021-10-01'dt.strftime("%Y年%m月%d日")'2021年10月01日'dt.strftime("%Y//%m//%d")'2021//10//01'dt.strftime("%Y-%m-%d %H:%M")'2021-10-01 00:00'dt.strftime("%A, %d. %B %Y %I:%M%p")'Friday, 01. October 2021 12:00AM'
        ?

        date.__format__(format)

        與 date.strftime()?相同。此方法使得為 date 對(duì)象指定以?格式化字符串字面值?表示的格式化字符串以及使用 str.format()?進(jìn)行格式化成為可能。雖然不建議使用這個(gè)裝逼,但是遇到別人裝逼的時(shí)候我們得知道。要獲取格式指令的完整列表,請(qǐng)看文末附表
        import datetimedt=datetime.date(2021, 10, 1)#創(chuàng)建一個(gè)日期對(duì)象dt.__format__("%Y年%m月%d日")'2021年10月01日'
        ?

        4、支持的運(yùn)算

        date2?=?date1?+?timedelta
        date2 等于從 date1 減去 timedelta.days 天。(1)
        date2?=?date1?-?timedelta
        計(jì)算 date2 的值使得 date2 + timedelta == date1。(2)
        timedelta?=?date1?-?date2
        (3)
        date1?
        如果 date1 的時(shí)間在 date2 之前則認(rèn)為 date1 小于 date2 。(4)

        ?

        三、datetime.time類

        1、time類概述

        作用:一個(gè)?time?對(duì)象代表某日的(本地)時(shí)間,它獨(dú)立于任何特定日期,并可通過(guò)?tzinfo?對(duì)象來(lái)調(diào)整。

        語(yǔ) 法:

        datetime.time(hour=0, minute=0, second=0, microsecond=0, 
        tzinfo=None, *, fold=0)

        參 數(shù):

        所有參數(shù)都是可選的,tzinfo?可以是?None,或者是一個(gè)?tzinfo?子類的實(shí)例。 其余的參數(shù)必須是在下面范圍內(nèi)的整數(shù):

        • 0?<=?hour?

        • 0?<=?minute?

        • 0?<=?second?

        • 0?<=?microsecond?

        • fold?in?[0,?1]

        如果給出一個(gè)此范圍以外的參數(shù),則會(huì)引發(fā)?ValueError。 所有參數(shù)值默認(rèn)為?0,只有?tzinfo?默認(rèn)為?None。

        ?

        通過(guò)內(nèi)置函數(shù)dir,可以查看time類的所有方法和屬性

        from datetime import timeprint(dir(time))['dst', 'fold', 'fromisoformat', 'hour', 'isoformat', 'max', 'microsecond', 'min', 'minute', 'replace', 'resolution', 'second', 'strftime', 'tzinfo', 'tzname', 'utcoffset']

        ?

        2、time屬性

        time.min

        早最的可表示?time,?time(0,?0,?0,?0)。

        from datetime import timetime.mindatetime.time(0, 0)

        time.max

        最晚的可表示?time,?time(23,?59,?59,?999999)。

        from datetime import timetime.maxdatetime.time(23, 59, 59, 999999)

        time.resolution

        兩個(gè)不相等的?time?對(duì)象之間可能的最小間隔,timedelta(microseconds=1),但是請(qǐng)注意?time?對(duì)象并不支持算術(shù)運(yùn)算。

        from datetime import timetime.resolutiondatetime.timedelta(microseconds=1)


        3、time實(shí)例屬性

        time.hour

        取值范圍是?range(24)。

        from datetime import timet = time(hour=12, minute=34, second=56, microsecond=123456)t.hour12

        time.minute

        取值范圍是?range(60)。

        t.minute34

        time.second

        取值范圍是?range(60)。

        t.second56

        time.microsecond

        取值范圍是?range(1000000)。

        t.microsecond123456

        time.tzinfo

        作為 tzinfo 參數(shù)被傳給?time?構(gòu)造器的對(duì)象,如果沒(méi)有傳入值則為?None。

        t.tzinfo

        time.fold

        取值范圍是?[0,?1]。 用于在重復(fù)的時(shí)間段中消除邊界時(shí)間歧義。 (當(dāng)夏令時(shí)結(jié)束時(shí)回?fù)軙r(shí)鐘或由于政治原因?qū)е庐?dāng)明時(shí)區(qū)的 UTC 時(shí)差減少就會(huì)出現(xiàn)重復(fù)的時(shí)間段。) 取值 0 (1) 表示兩個(gè)時(shí)刻早于(晚于)所代表的同一邊界時(shí)間。

        t.fold0

        4、time實(shí)例方法

        time.replace()

        作用:返回一個(gè)具有同樣屬性值的?time,除非通過(guò)任何關(guān)鍵字參數(shù)指定了某些屬性值。

        語(yǔ)法:time.replace(hour=self.hour,?minute=self.minute,?second=self.second,?

        microsecond=self.microsecond,?tzinfo=self.tzinfo,?*,?fold=0)

        from datetime import timet = time(hour=12, minute=34, second=56, microsecond=123456)t.replace(hour=23, minute=12,)datetime.time(23, 12, 56, 123456)

        time.isoformat()

        作用:返回表示為 ISO 8601 格式之一的時(shí)間字符串

        語(yǔ)法:time.isoformat(timespec='auto')

        from datetime import timet = time(hour=12, minute=34, second=56, microsecond=123456)t.isoformat()'12:34:56.123456'
        t.isoformat(timespec='minutes')'12:34'
        dt = time(hour=12, minute=34, second=56, microsecond=0)dt.isoformat(timespec='microseconds')'12:34:56.000000'
        dt.isoformat(timespec='auto')'12:34:56'

        time.fromisoformat()

        作用:返回對(duì)應(yīng)于?time.isoformat()?所提供的某種?time_string?格式的?time。 特別地,此函數(shù)支持以下格式的字符串:HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]

        語(yǔ)法:time.fromisoformat(time_string)

        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.__str__()

        作用:對(duì)于時(shí)間對(duì)象?t,?str(t)?等價(jià)于?t.isoformat()

        語(yǔ)法:time.__str__(t)

        from datetime import timet = time(hour=12, minute=34, second=56, microsecond=123456)time.__str__(t)'12:34:56.123456'str(t)'12:34:56.123456'

        time.strftime()

        作用:時(shí)間->字符串,返回一個(gè)由顯式格式字符串所指明的代表時(shí)間的字符串

        語(yǔ)法:time.strftime(format)

        from datetime import timet = time(hour=12, minute=3, second=56)t.strftime('%H:%M:%S')#用:分隔'12:03:56'#用%分隔t.strftime('%H%%%M%%%S')'12%03%56'

        time.__format__()

        作用:與?time.strftime()?相同

        語(yǔ)法:time.__format__(format)

        from datetime import timet = time(hour=12, minute=3, second=56)t.__format__('%H:%M:%S')'12:03:56't.__format__('%H%%%M%%%S')'12%03%56'

        time.utcoffset()

        作用:如果?tzinfo?為?None,則返回?None,否則返回?self.tzinfo.utcoffset(None),并且在后者不返回?None?或一個(gè)幅度小于一天的 a?timedelta?對(duì)象時(shí)將引發(fā)異常。

        time.dst()

        作用:如果?tzinfo?為?None,則返回?None,否則返回?self.tzinfo.dst(None),并且在后者不返回?None?或者一個(gè)幅度小于一天的?timedelta?對(duì)象時(shí)將引發(fā)異常。

        time.tzname()

        作用:如果?tzinfo?為?None,則返回?None,否則返回?self.tzinfo.tzname(None),如果后者不返回?None?或者一個(gè)字符串對(duì)象則將引發(fā)異常。

        from datetime import time, tzinfo, timedeltaclass TZ1(tzinfo):     def utcoffset(self, dt):        return timedelta(hours=1)     def dst(self, dt):         return timedelta(0)     def tzname(self,dt):         return "+01:00"     def  __repr__(self):         return f"{self.__class__.__name__}()"
        t = time(12, 10, 30, tzinfo=TZ1())tdatetime.time(12, 10, 30, tzinfo=TZ1())t.isoformat()'12:10:30+01:00't.dst()datetime.timedelta(0)t.tzname()'+01:00't.strftime("%H:%M:%S %Z")'12:10:30 +01:00''The {} is {:%H:%M}.'.format("time", t)'The?time?is?12:10.'

        ?


        四、datetime.datetime類

        1、datetime概述

        作用:date類可以同時(shí)獲得日期和時(shí)間信息,datetime?對(duì)象是包含來(lái)自?date?對(duì)象和?time?對(duì)象的所有信息的單一對(duì)象。與?date?對(duì)象一樣,datetime?假定當(dāng)前的格列高利歷向前后兩個(gè)方向無(wú)限延伸;與?time?對(duì)象一樣,datetime?假定每一天恰好有 3600*24 秒。

        語(yǔ)法:

        datetime.datetime(year, month, day, hour=0, minute=0, second=0, 
        microsecond=0, tzinfo=None, *, fold=0)

        參數(shù):year,?month?和?day?參數(shù)是必須的。?tzinfo?可以是?None?或者是一個(gè)?tzinfo?子類的實(shí)例。 其余的參數(shù)必須是在下面范圍內(nèi)的整數(shù):

        • MINYEAR?<=?year?<=?MAXYEAR,

        • 1?<=?month?<=?12,

        • 1?<=?day?<=?指定年月的天數(shù),

        • 0?<=?hour?

        • 0?<=?minute?

        • 0?<=?second?

        • 0?<=?microsecond?

        • fold?in?[0,?1].

        如果參數(shù)不在這些范圍內(nèi),則拋出?ValueError?異常。

        注意:microsecond-微秒,百萬(wàn)分之一秒

        ?

        datetime類是date和time的結(jié)合體,包括date與time的所有信息,date和time類中具有的方法和屬性,datetime類都具有。我們可以使用內(nèi)置函數(shù)dir查看該模塊支持的方法

        print(dir(datetime.datetime))[ 'astimezone', 'combine', 'ctime', 'date', 'day', 'dst', 'fold', 'fromisoformat', 'fromordinal', 'fromtimestamp', 'hour', 'isocalendar', 'isoformat', 'isoweekday', 'max', 'microsecond', 'min', 'minute', 'month', 'now', 'replace', 'resolution', 'second', 'strftime', 'strptime', 'time', 'timestamp', 'timetuple', 'timetz', 'today', 'toordinal', 'tzinfo', 'tzname', 'utcfromtimestamp', 'utcnow', 'utcoffset', 'utctimetuple', 'weekday', 'year']

        ?

        2、datetime類方法

        datetime.today()

        作用:獲取今天的時(shí)間,返回datetime對(duì)象,其中?tzinfo?為?None。 此方法的功能等價(jià)于?now(),但是不帶?tz?形參。

        語(yǔ)法:datetime.datetime.today(tz=None )

        from datetime import datetimedatetime.today() datetime.datetime(2021, 7, 5, 17, 58, 21, 359135)

        注:359135,microsecond-微秒,百萬(wàn)分之一秒

        datetime.now()

        作用:返回當(dāng)前時(shí)間,返回datetime對(duì)象。

        語(yǔ)法:datetime.datetime.now(tz=None )

        from datetime import datetime#獲取現(xiàn)在時(shí)間datetime.now()datetime.datetime(2021, 6, 27, 21, 59, 53, 950783)#調(diào)整下格式datetime.now().strftime('%Y-%m-%d %H:%M:%S')'2021-06-27 22:01:49'

        datetime.utcnow()

        作用:返回表示當(dāng)前 UTC 時(shí)間的 date 和 time,其中?tzinfo?為?None。

        語(yǔ)法:datetime.utcnow()

        from datetime import datetimedatetime.utcnow()datetime.datetime(2021, 7, 6, 2, 46, 7, 229768)datetime.now()datetime.datetime(2021, 7, 6, 10, 46, 3, 67817)

        可以看到,now()與相差了差不多8小時(shí)

        datetime.fromtimestamp()

        作用:時(shí)間戳表示為本地時(shí)間的簡(jiǎn)單日期時(shí)間對(duì)象, 如果可選參數(shù)?tz?為?None?或未指定,時(shí)間戳?xí)晦D(zhuǎn)換為所在平臺(tái)的本地日期和時(shí)間,返回的?datetime?對(duì)象將為天真型。

        語(yǔ)法:datetime.datetime.fromtimestamp(timestamp,?tz=None)

        import timeimport datetimett = time.time()tt1625542045.2471695datetime.datetime.fromtimestamp(tt)datetime.datetime(2021, 7, 6, 11, 27, 25, 247169)#取整數(shù)后,精確到秒,否則精確到微秒,一微秒=百萬(wàn)分之一秒datetime.datetime.fromtimestamp(1625542045)datetime.datetime(2021, 7, 6, 11, 27, 25)#例如,使用日期2008-12-27午夜UTC(自紀(jì)元起40*356*86400秒)datetime.datetime.fromtimestamp(40 * 356 * 86400)datetime.datetime(2008, 12, 27, 1, 0)

        datetime.utcfromtimestamp()

        作用:時(shí)間戳表示為本地時(shí)間的UTC日期時(shí)間對(duì)象

        語(yǔ)法:datetime.datetime.utcfromtimestamp(timestamp)

        import datetime
        #獲取本地當(dāng)前時(shí)間
        dt=datetime.datetime.now()
        #獲取時(shí)間戳
        dt.timestamp()
        1625549035.048533
        datetime.datetime.utcfromtimestamp(dt.timestamp())
        datetime.datetime(2021, 7, 6, 5, 23, 55, 48533)

        datetime.fromordinal()

        作用:返回對(duì)應(yīng)于預(yù)期格列高利歷序號(hào)的?datetime,其中公元 1 年 1 月 1 日的序號(hào)為 1。 除非?1?<=?ordinal?<=?datetime.max.toordinal()?否則會(huì)引發(fā)?ValueError。 結(jié)果的 hour, minute, second 和 microsecond 值均為 0,并且?tzinfo?值為?None。

        語(yǔ)法:datetime.fromordinal(ordinal)

        datetime.datetime.fromordinal(730920)datetime.datetime(2002, 3, 11, 0, 0)

        datetime.combine()

        作用:返回一個(gè)date對(duì)象和一個(gè)time對(duì)象合成的date對(duì)象, 如果提供了?tzinfo?參數(shù),其值會(huì)被用來(lái)設(shè)置結(jié)果的?tzinfo?屬性,否則將使用?time?參數(shù)的?tzinfo?屬性。

        語(yǔ)法:datetime.combine(date,?time,?tzinfo=self.tzinfo)

        d = date(2005, 7, 14)t = time(12, 30)datetime.combine(d, t)datetime.datetime(2005, 7, 14, 12, 30)

        對(duì)于任意?datetime?對(duì)象?d,d?=?datetime.combine(d.date(),?d.time(),?d.tzinfo)。 如果 date 是一個(gè)?datetime?對(duì)象,它的時(shí)間部分和?tzinfo?屬性會(huì)被忽略。

        datetime.fromisoformat()

        作用:返回一個(gè)對(duì)應(yīng)于?date.isoformat()?和?datetime.isoformat()?所提供的某一種?date_string?的?datetime?對(duì)象。 特別地,此函數(shù)支持以下格式的字符串:YYYY-MM-DD[*HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]],其中?*?可以匹配任意的單個(gè)字符。

        語(yǔ)法:datetime.fromisoformat(date_string)

        from datetime import datetimedatetime.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 值指明的 ISO 歷法日期所對(duì)應(yīng)的?datetime。 該datetime 對(duì)象的非日期部分將使用其標(biāo)準(zhǔn)默認(rèn)值來(lái)填充。 這是函數(shù)?datetime.isocalendar()?的逆操作。

        語(yǔ)法:datetime.fromisocalendar(year,?week,?day)

        from datetime import datetimedatetime.fromisocalendar(2021, 10, 1) datetime.datetime(2021, 3, 8, 0, 0)

        datetime.strptime()

        作用:按照特定時(shí)間格式將字符串轉(zhuǎn)換(解析)為時(shí)間類型。返回一個(gè)由顯式格式字符串所指明的代表時(shí)間的字符串。 要獲取格式指令的完整列表,請(qǐng)參閱?strftime() 和 strptime() 的行為。

        語(yǔ)法:datetime.strptime(date_string,?format)

        dt?=?datetime.strptime("21/11/06?16:30",?"%d/%m/%y?%H:%M")dtdatetime.datetime(2006, 11, 21, 16, 30)

        3、類屬性

        datetime.min

        最早的可表示?datetime,datetime(MINYEAR,?1,?1,?tzinfo=None)。

        from datetime import datetimedatetime.mindatetime.datetime(1, 1, 1, 0, 0)

        datetime.max

        最晚的可表示?datetime,

        datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999, tzinfo=None)。from datetime import datetimedatetime.maxdatetime.datetime(9999, 12, 31, 23, 59, 59, 999999)

        datetime.resolution

        兩個(gè)不相等的?datetime?對(duì)象之間可能的最小間隔,timedelta(microseconds=1)。

        from datetime import datetimedatetime.resolutiondatetime.timedelta(microseconds=1)

        4、實(shí)例屬性-只讀

        datetime.year

        在?MINYEAR?和?MAXYEAR?之間,包含邊界。

        from datetime import datetime
        datetime(2021,5,20,13,14,0,0).year
        2021

        datetime.month

        1 至 12(含)

        from datetime import datetimedatetime(2021,5,20,13,14,0,0).month5

        datetime.day

        返回1到指定年月的天數(shù)間的數(shù)字。

        from datetime import datetimedatetime(2021,5,20,13,14,0,0).day20

        datetime.hour

        取值范圍是?range(24)。

        from datetime import datetimedatetime(2021,5,20,13,14,0,0).hour13

        datetime.minute

        取值范圍是?range(60)。

        from datetime import datetimedatetime(2021,5,20,13,14,0,0).minute14

        datetime.second

        取值范圍是?range(60)。

        from datetime import datetimedatetime(2021,5,20,13,14,0,0).second0

        datetime.microsecond

        取值范圍是?range(1000000)。

        from datetime import datetimedatetime(2021,5,20,13,14,0,0).microsecond0

        datetime.tzinfo

        作為?tzinfo?參數(shù)被傳給?datetime?構(gòu)造器的對(duì)象,如果沒(méi)有傳入值則為?None。

        from datetime import datetimedatetime(2021,5,20,13,14,0,0).fold

        datetime.fold

        取值范圍是?[0,?1]。 用于在重復(fù)的時(shí)間段中消除邊界時(shí)間歧義。 (當(dāng)夏令時(shí)結(jié)束時(shí)回?fù)軙r(shí)鐘或由于政治原因?qū)е庐?dāng)明時(shí)區(qū)的 UTC 時(shí)差減少就會(huì)出現(xiàn)重復(fù)的時(shí)間段。) 取值 0 (1) 表示兩個(gè)時(shí)刻早于(晚于)所代表的同一邊界時(shí)間。

        from datetime import datetimedatetime(2021,5,20,13,14,0,0).fold0

        5、datetime實(shí)例方法

        datetime.date()

        作用:返回具有同樣 year, month 和 day 值的?date?對(duì)象。

        用法:datetime.date()

        datetime(2021,5,20,13,14,0,0).date()datetime.date(2021, 5, 20)

        datetime.time()

        作用:返回具有同樣 hour, minute, second, microsecond 和 fold 值的?time?對(duì)象。?tzinfo?值為?None。 另請(qǐng)參見(jiàn)?timetz()?方法。

        用法:datetime.time()

        datetime(2021,5,20,13,14,0,0).time()datetime.time(13, 14)

        datetime.timetz()

        作用:返回具有同樣 hour, minute, second, microsecond, fold 和 tzinfo 屬性性的?time?對(duì)象。 另請(qǐng)參見(jiàn)?time()?方法。

        用法:datetime.timetz()

        datetime(2021,5,20,13,14,0,0).timetz()datetime.time(13, 14)

        datetime.replace()

        作用:返回一個(gè)具有同樣屬性值的 datetime,除非通過(guò)任何關(guān)鍵字參數(shù)為某些屬性指定了新值。 請(qǐng)注意可以通過(guò)指定?tzinfo=None?來(lái)從一個(gè)感知型 datetime 創(chuàng)建一個(gè)簡(jiǎn)單型 datetime 而不必轉(zhuǎn)換日期和時(shí)間數(shù)據(jù)。

        用法: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)

        from datetime import datetimedatetime(2021,5,20,13,14,0,0).replace(year=2035, month=12)datetime.datetime(2035, 12, 20, 13, 14)

        datetime.astimezone()

        作用:返回一個(gè)具有新的?tzinfo?屬性?tz?的?datetime?對(duì)象,并會(huì)調(diào)整日期和時(shí)間數(shù)據(jù)使得結(jié)果對(duì)應(yīng)的 UTC 時(shí)間與?self?相同,但為?tz?時(shí)區(qū)的本地時(shí)間。

        用法:datetime.astimezone(tz=None)

        def astimezone(self, tz):    if self.tzinfo is tz:        return self    # Convert self to UTC, and attach the new time zone object.    utc = (self - self.utcoffset()).replace(tzinfo=tz)    # Convert from UTC to tz's local time.    return tz.fromutc(utc)

        ?

        datetime.timetuple()

        返回一個(gè)?time.struct_time,即?time.localtime()?所返回的類型。

        from datetime import datetimedatetime(2021,5,20,13,14,0,0).timetuple()time.struct_time(tm_year=2021, tm_mon=5, tm_mday=20, tm_hour=13, tm_min=14, tm_sec=0, tm_wday=3, tm_yday=140, tm_isdst=-1)

        datetime.utctimetuple()

        作用:如果?datetime?實(shí)例?d?為簡(jiǎn)單型,這類似于?d.timetuple(),不同之處在于?tm_isdst?會(huì)強(qiáng)制設(shè)為 0,無(wú)論?d.dst()?返回什么結(jié)果。 DST 對(duì)于 UTC 時(shí)間永遠(yuǎn)無(wú)效。返回UTC時(shí)間元組

        語(yǔ)法:datetime對(duì)象.utctimetuple()

        from datetime import datetimedatetime(2021,5,20,13,14,0,0).utctimetuple()time.struct_time(tm_year=2021, tm_mon=5, tm_mday=20, tm_hour=13,       tm_min=14, tm_sec=0, tm_wday=3, tm_yday=140, tm_isdst=0)

        datetime.toordinal()

        作用:返回日期的預(yù)期格列高利歷序號(hào)。 與?self.date().toordinal()?相同。

        用法:datetime.toordinal()

        datetime(2021, 5, 4).toordinal()737914

        datetime.timestamp()

        作用:返回對(duì)應(yīng)于?datetime?實(shí)例的 POSIX 時(shí)間戳。 此返回值是與?time.time()?返回值類似的?float?對(duì)象。

        用法:datetime.timestamp()

        from datetime import datetimedatetime(2021, 5, 4).timestamp()1620057600.0

        datetime.weekday()

        作用:返回一個(gè)整數(shù)代表星期幾,星期一為 0,星期天為 6。 相當(dāng)于?self.date().weekday()。 另請(qǐng)參閱?isoweekday()。

        用法:datetime.weekday()

        import datetimedatetime.datetime(2021, 5, 4).weekday()1

        datetime.isoweekday()

        作用:返回一個(gè)整數(shù)代表星期幾,星期一為 1,星期天為 7。 相當(dāng)于?self.date().isoweekday()。 另請(qǐng)參閱?weekday(),?isocalendar()。

        用法:datetime.isoweekday()

        import datetimedatetime.datetime(2021, 5, 4).isoweekday()2

        datetime.isocalendar()

        作用:返回一個(gè)由三部分組成的元組:?year,?week?和?weekday,哪一年、第幾周和、周幾,等同于?self.date().isocalendar()。

        用法:datetime.isocalendar()

        import datetimedt = datetime.datetime.now()print(dt)2021-07-06 14:22:35.920877dt.isocalendar()(2021, 27, 2)

        datetime.isoformat()

        作用:返回一個(gè)以 ISO 8601 格式表示的日期和時(shí)間字符串

        用法:datetime.isoformat(sep='T',?timespec='auto')

        from datetime import datetime, timezonedatetime(2019, 5, 18, 15, 17, 8, 132263).isoformat()'2019-05-18T15:17:08.132263'datetime(2019, 5, 18, 15, 17, tzinfo=timezone.utc).isoformat()'2019-05-18T15:17:00+00:00'

        datetime.__str__()

        作用:對(duì)于?datetime?實(shí)例?d,str(d)?等價(jià)于?d.isoformat('?')。

        語(yǔ)法:datetime.__str__(d)

        from datetime import datetime# __str__datetime.__str__(datetime(2019, 5, 18, 15, 17, 8, 132263))'2019-05-18 15:17:08.132263'# strstr(datetime(2019, 5, 18, 15, 17, 8, 132263))'2019-05-18 15:17:08.132263'

        datetime.ctime()

        作用:返回一個(gè)表示日期和時(shí)間的字符串,輸出字符串將?并不?包括時(shí)區(qū)信息,無(wú)論輸入的是感知型還是簡(jiǎn)單型。

        用法:datetime.ctime()

        from datetime import datetimedatetime(2002, 12, 4, 20, 30, 40).ctime()'Wed?Dec??4?20:30:40?2002'#d.ctime() 等效于:time.ctime(time.mktime(d.timetuple()))

        在原生 C?ctime()?函數(shù) (time.ctime()?會(huì)發(fā)起調(diào)用該函數(shù),但?datetime.ctime()?則不會(huì)) 遵循 C 標(biāo)準(zhǔn)的平臺(tái)上。

        ?

        datetime.strftime()

        作用:將給定格式的日期時(shí)間對(duì)象轉(zhuǎn)換為字符串。日期時(shí)間對(duì)象=>字符串,控制日期時(shí)間對(duì)象的輸出格式,date、datetime、time對(duì)象都支持strftime(format)?方法,可用來(lái)創(chuàng)建由一個(gè)顯式格式字符串所控制的表示時(shí)間的字符串。要獲取格式指令的完整列表,查看文末列表。

        用法:datetime.strftime(format)

        import datetimedt=datetime.datetime(2006, 11, 21, 16, 30)dt.strftime("%Y-%m-%d %H:%M")'2006-11-21 16:30'
        dt.strftime("%Y-%m-%d")'2006-11-21'
        dt.strftime("%A, %d. %B %Y %I:%M%p")'Tuesday, 21. November 2006 04:30PM'

        對(duì)比:

        strftime: 將給定格式的日期時(shí)間對(duì)象轉(zhuǎn)換為字符串。日期時(shí)間對(duì)象=>字符串,控制輸出格式

        strptime:將字符串解析為給定格式的日期時(shí)間對(duì)象。字符串=>日期時(shí)間對(duì)象,解析字符串


        strftime

        strptime

        用法

        根據(jù)給定的格式將對(duì)日期時(shí)間象轉(zhuǎn)換為字符串

        將字符串解析為給定相應(yīng)格式的datetime?對(duì)象

        類型

        實(shí)例方法

        類方法

        方法

        date;?datetime;?time

        datetime

        用法

        strftime(format)

        strptime(date_string,?format)

        示例

        datetime.datetime(2006, 11, 21, 16, 30) => ?'2006-11-21 16:30'

        "21/11/06 16:30" ?=> datetime.datetime(2006, 11, 21, 16, 30)

        datetime.__format__()

        作用:與?datetime.strftime()?相同。

        語(yǔ)法:datetime.__format__(format)

        import datetimedt=datetime.datetime(2006, 11, 21, 16, 30)dt.__format__("%Y-%m-%d %H:%M")'2006-11-21 16:30'

        ?

        ?

        五、datetime.timedelta

        1、模塊概述

        作用:timedelta?對(duì)象表示兩個(gè) date 或者 time 的時(shí)間間隔。

        語(yǔ)法:datetime.timedelta(days=0,?seconds=0,?microseconds=0,?milliseconds=0,

        ?minutes=0,?hours=0,?weeks=0)

        參數(shù):只有?days,?seconds?和?microseconds?會(huì)存儲(chǔ)在內(nèi)部。 參數(shù)單位的換算規(guī)則如下:

        • 1毫秒會(huì)轉(zhuǎn)換成1000微秒。

        • 1分鐘會(huì)轉(zhuǎn)換成60秒。

        • 1小時(shí)會(huì)轉(zhuǎn)換成3600秒。

        • 1星期會(huì)轉(zhuǎn)換成7天。

        并且 days, seconds, microseconds 會(huì)經(jīng)標(biāo)準(zhǔn)化處理以保證表達(dá)方式的唯一性,即:

        • 0?<=?microseconds?

        • 0?<=?seconds?

        • -999999999?<=?days?<=?999999999

        ?

        下面的例子演示了如何對(duì)?days,?seconds?和?microseconds?以外的任意參數(shù)執(zhí)行“合并”操作并標(biāo)準(zhǔn)化為以上三個(gè)結(jié)果屬性

        from datetime import timedeltadelta = timedelta(days=50,seconds=27,microseconds=10,milliseconds=29000,                  minutes=5,hours=8,weeks=2)#只有 days, seconds 和 microseconds 會(huì)存儲(chǔ)在內(nèi)部,其他會(huì)被轉(zhuǎn)換deltadatetime.timedelta(days=64, seconds=29156, microseconds=10)

        ?

        通過(guò)dir查看該類的方法和屬性

        import datetimedir(datetime.timedelta)['days','max','microseconds', 'min', 'resolution', 'seconds', 'total_seconds']

        2、類屬性

        timedelta.min

        The most negative?timedelta?object,?timedelta(-999999999).

        from datetime import timedeltatimedelta.mindatetime.timedelta(days=-999999999)

        timedelta.max

        from datetime import timedeltatimedelta.maxdatetime.timedelta(days=999999999, seconds=86399, microseconds=999999)

        timedelta.resolution

        兩個(gè)不相等的?timedelta?類對(duì)象最小的間隔為?timedelta(microseconds=1)。

        需要注意的是,因?yàn)闃?biāo)準(zhǔn)化的緣故,timedelta.max?>?-timedelta.min,-timedelta.max?不可以表示一個(gè)?timedelta?類對(duì)象。

        from datetime import timedeltatimedelta.resolutiondatetime.timedelta(microseconds=1)

        ?

        ?

        3、實(shí)例屬性(只讀)

        timedelta.days

        -999999999 至 999999999 ,含999999999

        from datetime import timedeltadelta = timedelta(days=50,seconds=27,microseconds=10,milliseconds=29000,                  minutes=5,hours=8,weeks=2)deltadatetime.timedelta(days=64, seconds=29156, microseconds=10)delta.days64

        timedelta.seconds

        0 至 86399,包含86399delta.seconds29156

        timedelta.microseconds

        0 至 999999,包含999999

        delta.microseconds10


        4、實(shí)例方法

        timedelta.total_seconds()

        作用:返回時(shí)間間隔包含了多少秒。等價(jià)于?td?/?timedelta(seconds=1)。對(duì)于其它單位可以直接使用除法的形式 (例如?td?/?timedelta(microseconds=1))。

        需要注意的是,時(shí)間間隔較大時(shí),這個(gè)方法的結(jié)果中的微秒將會(huì)失真(大多數(shù)平臺(tái)上大于270年視為一個(gè)較大的時(shí)間間隔)。

        from datetime import timedeltayear = timedelta(days=1)timedelta.total_seconds(year)86400.0


        5、支持的運(yùn)算

        運(yùn)算

        結(jié)果

        t1?=?t2?+?t3

        t2?和?t3?的和。 運(yùn)算后?t1-t2?==?t3?and?t1-t3?==?t2?必為真值。(1)

        t1?=?t2?-?t3

        t2?減?t3?的差。 運(yùn)算后?t1?==?t2?-?t3?and?t2?==?t1?+?t3?必為真值。 (1)(6)

        t1?=?t2?*?i?or?t1?=?i?*?t2

        乘以一個(gè)整數(shù)。運(yùn)算后假如?i?!=?0?則?t1?// i ==?t2?必為真值。


        In general,?t1?* i ==?t1?* (i-1) +?t1?is true. (1)

        t1?=?t2?*?f?or?t1?=?f?*?t2

        乘以一個(gè)浮點(diǎn)數(shù),結(jié)果會(huì)被舍入到 timedelta 最接近的整數(shù)倍。 精度使用四舍五偶入奇不入規(guī)則。

        f?=?t2?/?t3

        總時(shí)間?t2?除以間隔單位?t3?(3)。 返回一個(gè)?float?對(duì)象。

        t1?=?t2?/?f?or?t1?=?t2?/?i

        除以一個(gè)浮點(diǎn)數(shù)或整數(shù)。 結(jié)果會(huì)被舍入到 timedelta 最接近的整數(shù)倍。 精度使用四舍五偶入奇不入規(guī)則。

        t1?=?t2?//?i?or?t1?=?t2?//?t3

        計(jì)算底數(shù),其余部分(如果有)將被丟棄。在第二種情況下,將返回整數(shù)。 (3)

        t1?=?t2?%?t3

        余數(shù)為一個(gè)?timedelta?對(duì)象。(3)

        q,?r?=?divmod(t1,?t2)

        通過(guò) :?q?=?t1?//?t2?(3) and?r?=?t1?%?t2?計(jì)算出商和余數(shù)。q是一個(gè)整數(shù),r是一個(gè)?timedelta?對(duì)象。

        +t1

        返回一個(gè)相同數(shù)值的?timedelta?對(duì)象。

        -t1

        等價(jià)于?timedelta(-t1.days, -t1.seconds, -t1.microseconds), 和?t1* -1. (1)(4)

        abs(t)

        當(dāng)?t.days?>=?0``時(shí)等于?+\?*t*,?當(dāng)?``t.days?

        str(t)

        返回一個(gè)形如?[D?day[s],?][H]H:MM:SS[.UUUUUU]?的字符串,當(dāng)?t?為負(fù)數(shù)的時(shí)候, D 也為負(fù)數(shù)。 (5)

        repr(t)

        返回一個(gè)?timedelta?對(duì)象的字符串表示形式,作為附帶正規(guī)屬性值的構(gòu)造器調(diào)用。

        注:

        1)結(jié)果正確,但可能會(huì)溢出。

        2)結(jié)果正確,不會(huì)溢出。

        3)除以0將會(huì)拋出異常?ZeroDivisionError?。

        4)-timedelta.max?不是一個(gè)?timedelta?類對(duì)象。

        5)timedelta?對(duì)象的字符串表示形式類似于其內(nèi)部表示形式被規(guī)范化。對(duì)于負(fù)時(shí)間增量,這會(huì)導(dǎo)致一些不尋常的結(jié)果。例如:

        timedelta(hours=-5)datetime.timedelta(days=-1, seconds=68400)print(_)-1 day, 19:00:00

        6)表達(dá)式?t2?-?t3?通常與?t2?+?(-t3)?是等價(jià)的,除非 t3 等于?timedelta.max; 在這種情況下前者會(huì)返回結(jié)果,而后者則會(huì)溢出。

        from datetime import timedeltayear = timedelta(days=365)ten_years = 10 * yearten_yearsdatetime.timedelta(days=3650)ten_years.days // 36510nine_years = ten_years - yearnine_yearsdatetime.timedelta(days=3285)three_years = nine_years // 3three_years, three_years.days // 365(datetime.timedelta(days=1095), 3)

        ?

        六、datetime.tzinfo(時(shí)區(qū))

        class?datetime.tzinfo

        這是一個(gè)抽象基類,也就是說(shuō)該類不應(yīng)被直接實(shí)例化。 請(qǐng)定義?tzinfo?的子類來(lái)捕獲有關(guān)特定時(shí)區(qū)的信息。

        ?

        ?

        七、datetime.timezone

        timezone?類是?tzinfo?的子類,它的每個(gè)實(shí)例都代表一個(gè)以與 UTC 的固定時(shí)差來(lái)定義的時(shí)區(qū)。

        ?


        八、常量模塊

        datetime.MINYEAR

        date?或者?datetime?對(duì)象允許的最小年份。 常量?MINYEAR?是?1?。

        import datetime datetime.MINYEAR1

        datetime.MAXYEAR

        date?或?datetime?對(duì)象允許最大的年份。常量?MAXYEAR?是?9999?。

        import datetime datetime.MAXYEAR9999

        關(guān)聯(lián)閱讀:Python中的時(shí)間函數(shù)strftime與strptime對(duì)比

        ···? END? ···
        一、Number(數(shù)字)
        全面掌握Python基礎(chǔ),這一篇就夠了,建議收藏
        Python基礎(chǔ)之?dāng)?shù)字(Number)超級(jí)詳解
        Python隨機(jī)模塊22個(gè)函數(shù)詳解
        Python數(shù)學(xué)math模塊55個(gè)函數(shù)詳解
        二、String(字符串)
        Python字符串的45個(gè)方法詳解
        Pandas向量化字符串操作
        三、List(列表)
        超級(jí)詳解系列-Python列表全面解析
        Python輕量級(jí)循環(huán)-列表推導(dǎo)式
        四、Tuple(元組)
        Python的元組,沒(méi)想象的那么簡(jiǎn)單
        五、Set(集合)
        全面理解Python集合,17個(gè)方法全解,看完就夠了
        六、Dictionary(字典)
        Python字典詳解-超級(jí)完整版
        七、內(nèi)置函數(shù)
        Python初學(xué)者必須吃透這69個(gè)內(nèi)置函數(shù)!
        八、正則模塊
        Python正則表達(dá)式入門到入魔
        筆記 | 史上最全的正則表達(dá)式
        八、系統(tǒng)操作
        Python之shutil模塊11個(gè)常用函數(shù)詳解
        Python之OS模塊39個(gè)常用函數(shù)詳解
        九、進(jìn)階模塊
        【萬(wàn)字長(zhǎng)文詳解】Python庫(kù)collections,讓你擊敗99%的Pythoner
        高手如何在Python中使用collections模塊
        掃描關(guān)注本號(hào)↓
        瀏覽 82
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            少妇xxxxx性开放 | 操操网色酷| 激情日逼| 国产aⅴ片 | 免费视频一区二区三区四区 | 成人做爰A片免费播放金桔视频 | 欧美午夜久久 | 在线观看亚洲免费视频 | 成人高清无码视频在线观看一区二区 | 白丝校花被狂揉大胸羞羞 |