Python中datetime模块操作详解 | 技术一流

首页 » Python » 正文

Python中datetime模块操作详解

继续清理笔记,都是一些基本操作详解之类的,原则以datetime为中心, 起点或中转, 转化为目标对象. 源码分析以及在做系统中一些细节难点等, 后续会放出, 其中涵盖了大多数业务场景中需要的日期转换处理, 适合老司机翻阅.

日期和时间有两种类型:“naive” 和 “aware”. 简单说naive就是不知道时区信息的对象,仅表示协调世界时(UTC); 而aware对象则具有时区和夏令时信息,用于表示时间的一个特定时刻(对于需要aware对象的程序,可以参考第三方库:pytz)

datetime.date
表示日期的类

date提供的实例方法和属性:

  • date.replace(year, month, day): 生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性(原有对象仍保持不变)
  • date.timetuple():  返回日期对应的time.struct_time对象
  • date.toordinal():  返回日期对应的Gregorian Calendar日期
  • date.weekday():  返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推
  • data.isoweekday():  返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推
  • date.isocalendar():  返回格式如(year,month,day)的元组
  • date.isoformat():   返回格式如’YYYY-MM-DD’的字符串
  • date.strftime(fmt):  自定义格式化字符串
  • date.toordinal():  返回公历日期顺序(序数)
  • data.fromordinal(ordinal):  返回该序数的日期

date还对某些操作进行了重载,它允许我们对日期进行如下一些操作:

  • date2 = date1 + timedelta # 日期加上一个间隔,返回一个新的日期对象(timedelta将在下面介绍,表示时间间隔)
  • date2 = date1 – timedelta # 日期减去间隔,返回一个新的日期对象
  • timedelta = date1 – date2 # 两个日期相减,返回一个时间间隔对象
  • date1 < date2 # 两个日期进行比较,返回bool值 注: 对日期进行操作时,要防止日期超出它所能表示的范围

datetime.time
表示时间,由时、分、秒以及毫秒组成, 类提供的实例方法和属性:

  • time.min、time.max: time类所能表示的最小, 最大时间. 其中, time.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999)
  • time.hour、time.minute、time.second、time.microsecond: 时、分、秒、毫秒
  • time.resolution: 时间的最小单位,这里是1毫秒
  • time.tzinfo:  时区信息
  • time.replace([hour[, minute[, second[, microsecond[, tzinfo]]]]]): 返回新的时间对象,用参数指定的时,分,秒,毫秒代替原有对象中的属性(原有对象仍不变)
  • time.isoformat():返回如”HH:MM:SS”格式的字符串表示
  • time.strftime(fmt):返回自定义格式化字符串

datetime.datetime
表示日期时间,是date与time的结合体,包括date与time的所有信息,其定义的类属性与方法:

  • datetime.min、datetime.max:  datetime所能表示的最小值与最大值
  • datetime.resolution:  datetime最小单位(毫秒)
  • datetime.today(): 返回一个表示当前本地时间的datetime对象
  • datetime.now([tz]): 返回一个表示当前本地时间的datetime对象,若提供了参数tz,则获取tz参数所指时区的本地时间
  • datetime.utcnow(): 返回一个当前utc时间的datetime对象
  • datetime.fromtimestamp(timestamp[, tz]): 根据时间戮创建一个datetime对象, 参数tz指定时区信息
  • datetime.utcfromtimestamp(timestamp): 根据时间戮创建一个datetime对象
  • datetime.combine(date, time): 根据date和time, 创建一个datetime对象
  • datetime.strptime(date_string, format): 将格式字符串转换为datetime对象

datetime类提供的实例方法与属性(很多在date和time中已出现过,在此有类似的意义). 下面是格式字符串详解:

发表评论