Python datetime 模块介绍

Python datetime 模块介绍

datetime 主要包含 date(日期相关操作),time(时间相关操作),datetime(date 和 time 的整合),datetime_CAPI(C 语言接口),timezone(时区操作),timedelta(时间差值表示)。

同时需要注意由于 date,time 和 datetime 的功能极其类似,因此相同的方法只介绍一遍,感觉适用的方法基本都适用且功能类似。还有就是一个对象的成员函数通常也能够通过指定类的静态方法实现调用,文中不再过多介绍,读者可自行尝试后使用。

date 类

date 类通过 datetime.date(year, month, day) 创建对象,之后可以通过 year,month,day 对象引用 date 实例中的对应信息。其中,year 的范围为 [1, 9999],month 为 [1, 12],day 根据具体的年和月确定。

常用函数介绍如下:

  • datetime.date.today():返回当前日期的 date 对象
  • datetime.date.weekday(date):传入 date 对象返回一个整数,表示传入日期的星期数,星期一到星期日为 0 到 6
  • datetime.date.isoweekday(date):与 weekday 功能类似,不过星期一到星期日为 1 到 7
  • datetime.date.isocalendar(date):传入 date 对象返回一个元胞,分别表示哪一年,当前年的第几周和星期几。星期表示从 0 到 6
  • [date].replace([year, month, day]) 或者 datetime.date.repalce(date, [year, month, day]):替换指定对象中的对应属性,其他属性保持不变。例如 d.replace(year=2020)
  • datetime.date.resolution:返回 datetime.deltatime 对象,表示当前分辨率

time 类

time 类通过 datetime.time(hour, minute, second, microsecond) 创建对象,对应对象的属性值通过 hour, minute, second, microsecond 取得。

datetime 类

datetime 类通过 datetime.datetime(year, month, day, hour, minute, second, microsecond, tzinfo) 创建对象,对应对象的属性值通过类似方法取得。

  • datetime.datetime.now():获取当前时刻的详细时间信息
  • datetime.datetime.combine(date, time):传入 date 和 time 对象,将两者信息组合生成对应 datetime 对象。
  • timestamp():将 datetime 对象转换成时间戳对象(浮点数,从 1970-1-1 00:00:00 UTC+0:00 开始计算)

timezone 类

timezone 类描述了对应时间的时区,可以通过 timezone(timedelta) 构造实例。需要注意的是只有 datetime.datetime 类有时区信息且默认创建的 datetime 对象时区信息为空。

  • astimezone():为某个 datetime 对象设置时区

timedelta 类

时间之间进行加减运算都会产生 timedelta 类,其通过 timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) 构造。其具体操作就是时间的加加减减比较简单,需要注意的是 timedelta 的 days 属性是两个时刻相差的完整天数,seconds 是去除 days 相差时间之后相差的秒数(因此相差秒数一定小于 1 天),同理 microseconds 是去除 seconds 相差时间之后相差的微妙数(因此相差微妙数一定小于 1 秒)。

时间格式化

其实大量涉及时间的操作都是不同格式下时间的转换。首先我先给出格式化字符的说明,然后再一一介绍常用的函数。

符号 说明
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d     月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I     12小时制小时数(01-12)
%M     分钟数(00=59)
%S     秒(00-59)
%a     本地简化星期名称
%A     本地完整星期名称
%b     本地简化的月份名称
%B     本地完整的月份名称
%c     本地相应的日期表示和时间表示
%j     年内的一天(001-366)
%p     本地A.M.或P.M.的等价符
%U    一年中的星期数(00-53)星期天为星期的开始
%w     星期(0-6),星期天为星期的开始
%W     一年中的星期数(00-53)星期一为星期的开始
%x     本地相应的日期表示
%X     本地相应的时间表示
%Z     当前时区的名称
%%     %号本身

常用函数:

  • datetime.*.fromtimestamp(time):传入 time.time 获取的时间信息(timestamp),生成对应时刻的指定对象
  • datetime.*.utcfromtimestamp(time):传入 time.time 获取的时间信息(timestamp),生成对应时刻utc时间戳(使用格林威治时间)的指定对象
  • strftime(format):按照上述格式化字符格式化字符串
  • strptime(string, format):根据传入的时刻字符串和格式化字符串,输出指定时刻的 datetime 对象
  • __str__():内置表示字符串,格式形如 2020-02-25 15:48:46.748326
  • ctime():ctime 格式表示,形如 Tue Feb 25 15:48:46 2020
  • format():按照上述格式化字符格式化字符串
  • isoformat():按照 iso 标准格式化字符串

time 类介绍

下面介绍的并不是 datetime 中的内容,而是独立的 time 包的内容。同时,这里只做简要介绍。

常用函数:

  • time.time():返回用浮点数表示的 utc 时间
  • time.gmtime(time):将浮点数表示转换为 time_struct 类
  • time.mktime(time_struct):将 time_struct 类转为浮点数表示。在 mktime(gmtime(time)) 之后与之前的 time 浮点数存在一定偏差,但能保证不同 time 转换之后的差值不变(精确到秒)
  • time.strftime(time_stuct, format):将 time_struct 类转换为指定格式
  • time.strptime(string, format):按照指定格式格式化 string 变量,得到一个 time_struct 类。

猜你喜欢

转载自blog.csdn.net/a40850273/article/details/104491694