Python學習之 datetime模組

ckxllf發表於2019-10-11

  datetime 模組提供了可以透過多種方式操作日期和時間的類。在支援日期時間數學運算的同時,實現的關注點更著重於如何能夠更有效地解析其屬性用於格式化輸出和資料操作。

  datetime 模組中提供了六種可用型別,分別是:

  1、類 datetime.date:表示一個理想日期,屬性有 year、month、day;

  2、類 datetime.time:表示一個理想時間,屬性有 hour、minute、second、microsecond 和 tzinfo;

  3、類 datetime.datetime:表示日期和時間的組合,屬性有 year、month、day、hour、minute、second、microsecond 和 tzinfo;

  4、類 datetime.timedelta:表示兩個 date 物件或者 time 物件,或者 datetime 物件之間的時間間隔,精確到微秒。屬性有 days、seconds、microsecond;

  5、類 datetime.tzinfo:表示時區資訊物件的抽象基類,用於給 datetime 類和 time 類提供自定義的時間調整概念(例如,負責時區或者夏令時)。

  6、類 datetime.timezone:一個實現了 tzinfo 抽象基類的子類,用於表示相對於 世界標準時間(UTC)的偏移量。

  在以上六種可用型別中,datetime 為 date 的子類,timezone 為 tzinfo 的子類。另外除了以上六種型別,datetime 模組還提供了兩個常量,datetime.MINYEAR:表示 date 或 datetime 物件中允許的最小年份,其值為 1;datetime.MAXYEAR:表示 date 或 datetime 物件中允許的最大年份, 其值為 9999。

  下面將詳細介紹前四種可用型別

  datetime.date

  date 是一種具體日期型別,它的例項物件支援大於、小於、大於等於、小於等於、等於運算,得到 bool 值;支援加上一個 timedelta 物件的加法運算,得到 date 物件;支援減去一個 date 或 timedelta 物件的減法運算,得到 timedelta 或 datetime 對像。

  另外,date 物件可以作為字典的鍵,在布林上下文中,所有 date 物件都被認為是 True。

  詳細介紹如下:

  建構函式: datetime.date(year, month, day)

  引數:

  第一個參數列示年,取值範圍為 MINYEAR <= year <= MAXYEAR; MINYEAR=1, MAXYEAR=9999

  第二個參數列示月,取值範圍為 1 <= month <= 12

  第三個參數列示日,取值範圍為 1 <= day <= 給定年份該月份的最大天數

  類屬性

  min:可表示的最早期日,即 date(MINYEAR, 1, 1)

  max: 可表示的最大日期,即 date(MAXYEAR, 12, 31)

  resolution:非相等日期之間的最小可能差異,即 timedelta(days=1)

  類方法(常用構造方法)

  fromtimestamp(cls, t)

  功能:返回與 POSIX 時間戳對應的本地日期

  引數:cls 表示 date 類,t 表示時間戳

  返回值:一個 date 物件

  today(cls)

  功能:獲取當前時刻的日期

  引數:cls 表示 date 類,自動傳入

  返回值:一個 date 物件

  fromisoformat(cls, date_string)

  功能:從提供的 date_string 中構造一個日期

  引數:cls 表示 date 類;date_string 表示日期字串,其格式為 YYYY-MM-DD

  返回值:一個 date 物件

  例項屬性(只讀,其實是靜態屬性)

  year:返回年

  month:返回月

  day:返回日

  例項方法(常用)

  ctime(self)

  功能:返回 ctime() 風格的日期字串

  引數:self 表示物件本身

  返回值:一個字串

  strftime(self, format)

  功能:按照指定的格式返回日期

  引數:self 表示物件本身,format 表示格式字串

  返回值:一個字串

  isoformat(self)

  功能:返回根據 ISO 格式化的日期。格式為:YYYY-MM-DD

  引數:self 表示物件本身

  返回值:一個字串

  replace(year=self.year, month=self.month,day=self.day)

  功能:為指定欄位返回具有新值的新日期

  引數:分別是年,月,日,不提供則預設為 self 對應的值

  返回值:一個新的 date 物件

  timetuple(self)

  功能:返回與 time.localtime() 相容的本地時間元組

  引數:self 表示物件本身

  返回值:時間元組

  weekday(self)

  功能:以整數形式返回星期幾,其中星期一為 0,星期日為 6

  引數:self 表示物件本身

  返回值:一個整數

  isoweekday(self)

  功能:以整數形式返回星期幾,其中星期一為 1,星期日為 7

  引數:self 表示物件本身

  返回值:一個整數

  isocalendar(self)

  功能:返回I年、第幾周、周幾

  引數:self 表述物件本身

  返回值:返回一個包含ISO年,周號和工作日的三元組。

  datetime.datetime

  datetime 模組下的 datetime 是 date 類的一個子類,它的例項物件支援大於、小於、大於等於、小於等於運算,得到 bool 值;支援加上一個 timedelta 物件的加法運算,得到 datetime 物件;支援減去一個 datetime 或 timedelta 物件的減法運算,得到 timedelta 或 datetime 對像。

  datetime 物件還可以作為字典的鍵值,並且,在 bool 上下文中,datetime 物件都被認為是 True。

  詳細介紹如下:

  建構函式:datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)

  其中,year、month 和 day 是必須要傳入的引數,hour、minute、second、microsecond、fold 預設為 0, tzinfo 預設為 None,也可以傳入 tzinfo 子類的例項( tzinfo 是一個抽象類)

  注意:除 tzinfo 外,其他引數都要是整數

  引數:

  第一個參數列示年,取值範圍為 MINYEAR <= year <= MAXYEAR; MINYEAR=1, MAXYEAR=9999

  第二個參數列示月,取值範圍為 1 <= month <= 12

  第三個參數列示日,取值範圍為 1 <= day <= 給定年份該月份的最大天數

  第四個參數列示時,取值範圍為 0 <= hour <= 23

  第五個參數列示分,取值範圍為 0 <= minute <= 59

  第六個參數列示秒,取值範圍為 0 <= second <= 59

  第七個參數列示微秒,取值範圍為 0 <= microsecond < 1000000

  第八個參數列示時區資訊物件,預設 tzinfo=None,一般用不到

  fold 引數是3.6版本新加入的,取值範圍為[0, 1]。該引數需要以關鍵字的形式傳入

  fold 引數的詳解請參考:docs.python.org/3/library/datetime.html#datetime-objects

  類屬性:

  min:表示最早的 datetime 物件, 同於 datetime(MINYEAR, 1, 1, tzinfo=None)

  max:表示最晚的 datetime 物件, 同於 datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999, tzinfo=None)

  resolution:表示兩個非相等 datetime 物件之間可能的最小差

  類方法(常用構造方法):

  fromtimestamp(cls, t, tz=None)

  功能:根據時間戳構造一個 datetime 物件

  引數:cls表示 datetime 類(自動傳入),t 表示時間戳, tz表示時區資訊物件,預設為 None

  返回值:一個 datetime 的例項物件

  utcfromtimestamp(cls, t)

  功能:建立一個 UTC 時間 的 datetime 物件

  引數:cls 表示 datetime 類, t 表示時間戳

  返回值:一個 datetime 物件

  now(cls, tz = None)

  功能:獲取當前的時間,格式為:2019-09-29 15:40:01.972076

  引數:cls表示 datetime 類(自動傳入),tz表示時區資訊物件,預設為 None

  返回值:基於當前時刻的時間戳建立的 datetime 物件

  說明:其實就是 t = time.time(); return cls.fromtimestamp(t, tz)

  utcnow(cls)

  功能:獲取當前的 UTC 時間, 格式為:2019-10-08 00:03:34.749434

  引數:cls表示 datetime 類(自動傳入)

  返回值:一個 datetime 物件

  說明:其實就是 t = time.time(); return cls.utcfromtimestamp(t)

  combine(cls, date, time, tzinfo=True)

  功能:根據給定的日期和時間建立一個 datetime 物件。如果提供了tzinfo 引數,則使用其值設定返回物件的 tzinfo 屬性,否則使用time引數的tzinfo屬性

  引數:cls 表示 datetime 類,date 表示日期物件,time 表示時間物件

  返回值:一個datetime 物件

  fromisoformat(cls, date_string)

  功能:根據 date_string 給定的格式建立一個 datetime 物件

  引數:cls 表示 datetime 類,date_string 表示一個時間日期字串,其格式為:YYYY-MM-DD[*HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]]

  返回值:一個 datetime 物件

  說明:若字串中沒有包含時分秒,則其值預設為零

  strptime(cls, date_string, format)

  功能:按照給定的格式解析表示時間日期的字串,並以此建立一個 datetime 物件

  引數:cls 表示類本身,date_string 表示時間日期字串(如:'2019-11-06'),format 表示格式字串(如:'%Y-%m-%d')

  返回值:一個 datetime 物件

  例項屬性(只讀,其實是靜態屬性)

  year:返回年

  month:返回月

  hour:返回小時

  minute:返回分鐘

  second: 返回秒

  microsecond: 返回微秒

  tzinfo: 返回時區資訊物件

  fold: 返回 fold 的值(其實 fold 是類 datetime 在__new__方法中定義的一個預設為 0 的引數,需要以關鍵字引數的形式傳入)

  例項方法(常用)

  timetuple(self)

  功能:返回與 time.localtime() 相容的本地時間元組

  引數:self 表示物件本身

  返回值:時間元組

  timestamp(self)

  功能:返回與物件相應的時間戳

  引數:self 表示物件本身

  返回值:一個浮點數,表示時間戳

  utctimetuple(self)

  功能:返回與time.gmtime()相容的UTC時間元組

  引數:self 表示物件本身

  返回值:時間元組

  date(self)

  功能:返回物件的日期部分

  引數:self 表示物件本身

  返回值:一個 datetime.date 物件,表示日期部分

  time(self)

  功能:返回物件的時間部分

  引數:self 表示物件本身

  返回值:一個 tzinfo 為 None 的 datetime.time 物件,表示時間部分

  timetz(self)

  功能:返回物件的時間部分

  引數:self 表示物件本身

  返回值:返回一個時間部分和 tzinfo 屬性與 self 相同的 datetime.time物件

  replace(self, year=None, month=None, day=None, hour=None,

  minute=None, second=None, microsecond=None, tzinfo=True,

  *, fold=None) 無錫婦科醫院哪家好

  功能:返回為指定欄位具有新值的新日期時間

  引數:物件本身和年月日...

  返回值:一個新的與 self 同型別的物件

  ctime(self)

  功能:返回代表時間和日期的字串,格式為 ctime() 風格,如:Tue Oct 8 15:34:17 2019

  引數:self 表示物件本身

  返回值:一個表示時間日期的字串

  strftime(self, format)

  功能:返回指定格式的時間日期字串

  引數:format 表示時間日期的格式字串

  返回值:一個字串

  weekday(self)

  功能:返回星期幾

  引數:self 表示物件本身

  返回值:一個[0, 6]的整數,0 表示星期一

  isoweekday(self)

  功能:返回星期幾

  引數:self 表示物件本身

  返回值:一個[1, 7]的整數,1 表示星期一

  isocalendar(self)

  功能:返回I年、第幾周、周幾

  引數:self 表述物件本身

  返回值:返回一個包含ISO年,周號和工作日的三元組。

  datetime.time

  datetime 模組下的 time 類是一種具體的時間型別,它的例項代表一天(本地)的時間,與任何特定的日期無關,並且 time 物件可以透過 tzinfo 物件進行調整。time 的例項支援大於、小於、大於等於、小於等於的運算,並可以作為字典的鍵。在布林上下文中,time 物件始終為 True

  詳細介紹如下:

  建構函式: datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)

  它的各個引數的含義與範圍都於 datetime 類中相應的引數相同,不同的是 datetime.time 類的所有引數都有預設值,

  所以在建立 datetime.time物件時可以不傳入任何引數

  類屬性:

  min:表示最早的時間,即 time(0, 0, 0, 0)

  max: 表示最晚的時間,即 time(23, 59, 59, 999999)

  resolution:表示兩個非相等 time 物件之間可能的最小差異,即 timedelta(microseconds=1)

  # 這裡需要注意,datetime.time 物件不支援算術運算

  類方法(常用構造方法)

  fromisoformat(cls, time_string)

  功能:按 time_string 提供的格式構造一個 time 物件

  引數:cls 表示 datetime.time 類,time_string 表示時間字串

  返回值:一個 datetime.time 物件

  PS:time_string 提供的格式需要滿足 time.isoformat() 要求的格式,具體為:HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]

  例項屬性(只讀,其實是靜態屬性)

  hour:返回小時

  minute:返回分鐘

  second: 返回秒

  microsecond: 返回微秒

  tzinfo: 作為 tzinfo 引數傳遞給時間建構函式的物件,如果沒有傳遞則為 None。

  fold: 返回 fold 的值,0 或 1

  例項方法(常用)

  isoformat(self, timespec='auto')

  功能:以ISO格式返回表示時間的字串,即 HH:MM:SS.ffffff,如果 microsecond為 0,則返回HH:MM:SS

  引數:self 表示物件本身;timespec用於指定要包括的時間的其他組成部分的數量,它的值可以是下面的一種

  'auto':如果 microsecond 是 0 則格式同 'seconds',否則同 'microseconds'

  'hours':包含 hour,並採用 HH 格式

  'minutes':包含 hour 和 minute,並採用 HH:MM 格式

  'seconds':包含 hour、minute、second,並採用 HH:MM:SS 格式

  'milliseconds':包括全部,但將小數秒部分截短(是直接捨去,而不是四捨五入)至毫秒。即 HH:MM:SS.sss 格式

  'microseconds':包括 HH:MM:SS.ffffff 格式的全部時間。

  返回值:一個字串

  strftime(self, format)

  功能:返回表示時間的字串,由明確的格式字串控制

  引數:self 表示物件本身,format 表示格式字串,如:'%H:%M:%S'

  返回值:一個字串

  datetime.timedelta

  timedelta 類的例項表示持續時間,即兩個日期或時間的差。它的物件支援比較運算,加或減去一個同型別物件,乘或除一個整數,一元加、減,和 abs 運算,支援 divmod() 函式;timedelta 還可以作為字典鍵。在布林上下文中,當且僅當 timedelta 物件不為 timedelta(0) 時,表示為 True。

  詳細介紹如下:

  建構函式: datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

  引數:所有引數都是可選的,且引數可以是整數或浮點數,也可以是正數或負數

  類屬性

  min: 表示最負的 timedelta 物件,即 timedelta(-999999999)

  max:表示最正的 timedelta 物件,即 timedelta(days=999999999, hours=23, minutes=59, seconds=59, microseconds=999999)

  resolution:表示兩個不相等的 timedelta 物件之間可能的最小差,即 timedelta(microseconds=1)

  例項屬性(只讀,其實是靜態屬性)

  days: 返回天數,介於-999999999和999999999之間

  seconds: 返回秒數,介於0至86399(含)之間

  microseconds:返回毫微秒數,介於0至999999(含)之間

  例項方法

  total_seconds(self)

  功能:返回持續時間中包含的總秒數

  引數:self表示物件本身

  返回值:一個浮點數


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2659518/,如需轉載,請註明出處,否則將追究法律責任。

相關文章