热门IT资讯网

datetime模块源码解读

发表于:2024-11-27 作者:热门IT资讯网编辑
编辑最后更新 2024年11月27日,datetime模块是基本日期和时间类型,提供了以简单和复杂的方式操作日期和时间的类.可以进行输出格式化操作.日期和时间对象有两种:naive 和 aware.datetim

datetime模块是基本日期和时间类型,提供了以简单和复杂的方式操作日期和时间的类.可以进行输出格式化操作.

日期和时间对象有两种: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 : 时区的名字(不存在就为空字符)%% : '%'字符.
0