datetime模塊源碼解讀

datetime模塊是基本日期和時間類型,提供了以簡單和複雜的方式操作日期和時間的類.可以進行輸出格式化操作.<!-- more -->

日期和時間對象有兩種:naive 和 aware .
datetime並且time 對象具有可選的時區信息屬性,tzinfo可以將其設置爲抽象tzinfo類的子類的實例.

常量

  • datetime.MINYEAR: 一個date或一個datetime對象中允許的最小年份數。 MINYEAR是1.
  • datetime.MAXYEAR: 一個date或一個datetime對象中允許的最大年份數。 MAXYEAR是9999.

可用類的類型

  • class datetime.date
    • 理想化的天真日期,屬性: year,month,和 day。
  • class datetime.time
    • 理想化的時間.屬性: hour,minute,second,microsecond,和tzinfo.
  • class datetime.datetime
    • 日期和時間的組合。屬性:year,month, day,hour,minute,second,microsecond,和tzinfo。
  • class datetime.timedelta
    • 表達兩者之間的差異的持續時間date,time或datetime實例微秒的分辨率
  • class datetime.tzinfo
    • 時區信息對象的抽象基類。這些由 datetime和和time類一起用於提供可定製的時間調整概念.
  • class datetime.timezone
    • 將tzinfo抽象基類實現爲與UTC的固定偏移量的類.

date類的類方法和類屬性

一個date對象代表一個理想化的日曆日期(年,月,日),當前的公曆無限期延長兩個方向。1年1月1日稱爲第1天,1年1月2日稱爲第2天

  • 類方法:

    • datetime.date(year, month, day) 參數是必需的,可以是整數.
    • date.today() 返回今天的日期.
    • date.fromtimestamp() 返回與POSIX時間戳對應的本地日期.
    • date.fromordinal() 返回對應於公曆格里高利序數的日期.
  • 類屬性:

    • date.min屬性: 表示最早的月日(1.1)
    • date.max屬性: 最晚的月日(12.31)
    • date.resolution: 非相等日期對象之間可能存在的最小差異, timedelta(days=1)。
  • 實例屬性(只讀):
    • date.year 打印年份.
    • date.month: 月份(1-12月)
    • date.day: 給定年份的給定月份的1和之間的天數.

注意: 日期可以用作字典鍵。在布爾上下文中,所有date 對象都被認爲是真的。

實例方法:
  • date.replace方法

    date.replace(year = self.year,month = self.month,day = self.day): 返回具有相同值的日期.

  • date.timetuple():返回元組類型的本地時間.
  • date.toordinal(): 返回日期的公曆序數.
  • date.weekday() 以星期爲單位返回星期幾.其中星期一爲0,星期日爲6.
  • date.isoweekday():以星期爲單位返回星期幾,星期一爲1,星期日爲7.
  • date.isocalendar():返回3元組(月份,周,工作日)
  • date.isoformat(): 返回表示ISO 8601格式的日期字符串'YYYY-MM-DD'.
  • date.str(): 對於日期d,str(d)相當於d.isoformat().
  • date.ctime() : 返回表示日期的字符串.
  • date.strftime(format): 返回表示日期的字符串,由顯式格式字符串控制。引用小時,分鐘或秒的格式代碼將顯示0值.
  • date.format(format):和date.strftie()相同.

  • 計算事件天數

參考libdate.py文件.

timedelta對象

 timedelta對象表示的持續時間,兩個日期或時間之間的差.

class datetime.timedelta(days = 0,seconds = 0,microseconds = 0,milliseconds = 0,minutes = 0,hours = 0,weeks = 0 

參數可以是整數,浮點數,正數或負數.

  • 參數轉換:
    毫秒轉換爲1000微秒。
    一分鐘轉換爲60秒。
    一小時轉換爲3600秒。
    一週轉換爲7天
類屬性:
  • timedelta.min : 負數的timedelta對象.
  • timedelta.max : 最大的timedelta對象.
  • timedelta.resolution : 非平等timedelta物體之間可能存在的最小差異.
實例屬性

實例屬性(只讀)

  • days 介於-999999999和999999999之間.
  • seconds: 介於0和86399之間.
  • microseconds: 介於0和999999之間.

timedelta對象還支持使用date和datetime 對象進行某些添加和減少.
timedelta對象是可散列的(可用作字典鍵).

  • 實例方法:
    • timedelta.total_seconds(): 返回持續時間中包含的總秒數

datetime對象

包含來自所有信息的單個對象date的對象和time對象。

  • 構造函數:
    class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)

    年,月,日參數是必需的。 tzinfo可以是None,或者是tzinfo子類的實例。其餘參數可以是整數.

datetime對象的類方法
  • datetime.today(): 返回當前的本地日期時間.
  • datetime.now(tz = None): 返回當前的本地日期和時間.
  • datetime.utcnow(): 返回當前的UTC日期和時間.
  • datetime.fromtimestamp(timestamp,tz = None):返回與POSIX時間戳對應的本地日期和時間.
  • datetime.utcfromtimestamp(timestamp): 返回與datetimePOSIX時間戳對應 的UTC.
  • datetime.fromordinal(ordinal): 返回datetime相應的公曆格里高利序數,其中第1年1月1日有序數1.
  • datetime.combine(date, time, tzinfo=self.tzinfo): 返回一個新datetime對象,其日期組件等於給定date對象,其時間組件等於給定time對象.
  • datetime.strptime(date_string, format): 返回datetime對應的date_string,根據格式解析.
datetime對象的類屬性
  • datetime.min: 最早的datetime,日期和時間.
  • datetime.max: 最晚的datetime,日期和時間.
  • datetime.resolution: 非平等datetime物體之間可能存在的最小差異.
實例屬性

實例屬性(只讀)

  • datetime.year: 年
  • datetime.month: 介於1到12之間.
  • datetime.day: 在給定年份的給定月份的1和之間的天數.
  • datetime.hour: 範圍(24小時)
  • datetime.minute:60分鐘.
  • datetime.second: 60秒.
  • datetime.microsecond: 1000000毫秒.
  • datetime.tzinfo: 該對象作爲tzinfo參數傳遞給datetime構造函數.
  • datetime.fold: 用於消除重複間隔期間的偏移時間.

datetime對象可以用作字典鍵.

實例方法
  • datetime.date(): 返回年月日的對象.
  • datetime.time(): 以相同的小時,分鐘,秒,微秒和摺疊返回對象。摺疊值被複制到返回的time對象.
  • datetime.timetz(): 返回time具有相同小時,分鐘,秒,微秒,摺疊和tzinfo屬性的對象.
  • datetime.replace()

    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.astimezone(tz=None): 返回datetime具有新tzinfo屬性tz的對象,調整日期和時間數據.tz必須是tzinfo子類的實例.
  • datetime.utcoffset(): 如果tzinfo是None,則返回None,否則返回 self.tzinfo.utcoffset(self),並在後者未返回時引發異常None,或者timedelta表示大小小於一天的整數分鐘的對象.
  • datetime.dst(): 如果tzinfo是None,則返回None,否則返回 self.tzinfo.dst(self),並在後者未返回時引發異常 None,或者timedelta表示大小小於一天的整數分鐘的對象。
  • datetime.tzname(): 如果tzinfo是None,則返回None,否則返回 self.tzinfo.tzname(self),如果後者不返回None或者是字符串對象,則引發異常.
  • datetime.timetuple():返回time.struct_time
  • datetime.utctimetuple():
  • datetime.toordinal(): 返回日期的格里高利序數.
  • datetime.timestamp(): 返回與datetime 實例對應的POSIX時間戳.該timestamp()方法使用該fold屬性消除重複間隔期間的時間歧義.
  • datetime.weekday(): 以星期爲單位返回星期幾,其中星期一爲0.
  • datetime.isoweekday(): 以星期爲單位返回星期幾,星期一爲1.
  • datetime.isocalendar(): 返回3元組(年,星期編號,工作日)
  • datetime.isoformat(sep ='T',timespec ='auto'): 返回表示ISO 8601格式的日期和時間的字符串.
  • datetime.str(): 相當於d.isoformat(' ')
  • datetime.ctime(): 返回表示日期和時間的字符串.
  • datetime.strftime(format): 返回表示日期和時間的字符串,由顯式格式字符串控制.
  • datetime.format(format): 返回表示日期和時間的字符串,由顯式格式字符串控制.

time對象

time對象表示一天中的時間,可以通過tzinfo對象調整.

class datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
類屬性
  • time.min: 最早的時間.
  • time.max: 最新的時間.
  • time.resolution: 非相等time對象 之間可能存在最小差異.
實例屬性

實例屬性(只讀)

  • time.hour: 24小時.
  • time.minute: 60分鐘
  • time.second: 60s
  • time.microsecond: 1000000
  • time.tzinfo: 該對象作爲tzinfo參數傳遞給time構造函數
  • time.fold: 消除重複間隔期間的牆壁時間.
實例方法
  • time.replace方法

    time.replace(hour=self.hour, minute=self.minute, second=self.second, microsecond=self.microsecond, tzinfo=self.tzinfo, * fold=0)
    返回time具有相同值的a

  • time.isoformat(timespec ='auto'): 返回表示ISO 8601格式的時間的字符串.
  • time.strftime(format): 返回表示時間的字符串,由顯式格式字符串控制.

timezone 對象

每一個實例,其中表示通過從UTC的固定偏移定義的時區.

class datetime.timezone(offset, name=None)
所述偏移參數必須被指定爲timedelta 代表的本地時間和UTC之間的差對象

timezone.utcoffset(dt): 返回timezone構造實例時指定的固定值.

timezone.tzname(dt): 返回timezone構造實例時指定的固定值.

timezone.dst(dt): 返回None.

類屬性:
timezone.utc
UTC時區,timezone(timedelta(0))。

format time結構化表示

%a : 簡化星期名稱
%A : 本地完整星期名稱
%b : 本地簡化月份名稱
%B : 本地完整月份名稱
%c : 本地相應的日期和時間表示.
%d : 一個月中的第幾天(01-31)
%H : 一天中的第幾個小時(24小時制,00-23)
%I : 第幾個小時(12小時制,01-12)
%j : 一年中的第幾天(001-366)
%m : 月份(01-12)
%M : 分鐘數(00-59)
%p : 本地am或者pm的對應符.
%S : 秒(01-61)
%U : 一年中的星期數.(00-53星期天是一個星期的開始),第一個星期天之前的所有天數都放在第0周.
%w : 一個星期中的第幾天(0-6,0是星期天)
%W : 和%U基本相同,不同的是%W以星期一爲一個星期的開始.
%x : 本地相應日期.
%X : 本地相應時間.
%y : 去掉世紀的月份(00-99)
%Y : 完整月份.
%Z : 時區的名字(不存在就爲空字符)
%% : '%'字符.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章