Python中常用于时间的模块有time、datetime 和 calendar,顾名思义 time 是表示时间(时、分、秒、毫秒)等,calendar 是表示日历时间的,本章先讨论 datetime 模块。
先看看 datetime 模块都有些什么
序号 | 描述 | 类型 | |
---|---|---|---|
1 | MAXYEAR | 9999,指能支持的最大年份 | int |
2 | MINYEAR | 1,指能支持的最小年份 | int |
3 | date | 表示日期的类,常用的属性有year, month, day | type |
4 | datetime | 表示日期时间的类,常用的属性有hour, minute, second, microsecond | type |
5 | datetime_CAPI | 后面详细描述 | 'PyCapsule' 类 |
6 | sys | 各种系统信息 | 'module'类 |
7 | time | 表示时间的类 | type |
8 | timedelta | 表示时间间隔,即两个时间点的间隔。在日期上做天days,小时hour,分钟,秒,毫秒,微妙的时间计算 | type |
9 | timezone | 表示时区的类 | type |
10 | tzinfo | 时区的相关信息 | type |
准确的说,datetime 模块中的常用类即date、datetime、time、timedelta、timezone、tzinfo。
其中date、datetime、time三个类有非常相似的属性和方法。
创建该三个类的示范如下:
import datetime
date_sample=datetime.date(2021,07,20) #年月日
time_sample=datetime.time(12,20,33) #时分秒
datetime_sample=datetime.datetime(2021,7,20,12,20,33)#年月日时分秒
序号 | 属性 | date | time | datetime |
---|---|---|---|---|
1 | max | 固定,datetime.date(9999, 12, 31) | 固定,datetime.time(23, 59, 59, 999999) | 固定 datetime.datetime(9999, 12, 31, 23, 59, 59, 999999) |
2 | min | 固定,datetime.date(1, 1, 1) | 固定,datetime.time(0, 0) | 固定,datetime.datetime(1, 1, 1, 0, 0) |
3 | microsecond | NA | 返回 int 数值,实例里面的毫秒 | 同time |
4 | second | NA | 返回 int 数值,实例里面的秒 | 同time |
5 | minute | NA | 返回 int 数值,实例里面的分 | 同time |
6 | hour | NA | 返回 int 数值,实例里面的时 | 同time |
7 | day | 返回 int 数值,实例里面的日期 | 同date | 同date |
8 | month | 返回 int 数值,实例里面的月份 | 同date | 同date |
9 | year | 返回 int 数值,实例里面的年份 | 同date | 同date |
10 | resolution | e时间的最小单位,即两个不同时间的最小差值,datetime.timedelta(days=1) | datetime.timedelta(microseconds=1) | datetime.timedelta(microseconds=1) |
11 | fold | NA | 有 | |
tzinfo | tzinfo 可以是 None 或者 tzinfo 子类的实例对象 | 同date | 同date | |
序号 | 方法 | date | time | datetime |
1 | ctime | 返回字符串类型的当前日期如 'Thu Sep 9 00:00:00 2021' | NA | 同 date |
2 | dst() | NA | 如果 tzinfo 属性是 None,则返回 None;否则返回 self.tzinfo.dst(self) | 同 time |
3 | fromisocalendar(year, week,weekday) | 返回datetime.date类型,从描述那一年第几个周第几天转换成描述年月日的格式 | NA | 返回datetime.datetime类型,从描述那一年第几个周第几天转换成描述年、月、日、时、分的格式 |
4 | fromisoformat(str) | 返回 date 类型,str 格式就是isoformat的返回格式即 '2021-09-09' | 返回 time 类型,str 格式就是isoformat的返回格式即 'hour:minute:second' | 返回 datetime 类型,str 格式就是isoformat的返回格式即 ''2021-09-02 12:40:22'' |
5 | fromordinal(int) | 返回 date 类型,int表示的数值就是从公元元年一月一号开始的第几天 | NA | 返回 datetmie 类型,int表示的数值就是从公元元年一月一号开始的第几天 |
6 | fromtimestamp(timestamp) | 返回 date 类型,POSIX | NA | 返回 datetime 类型 |
7 | isocalendar() | 返回一个三元素的元组,即显示在calendar里面的year、week、weekyday | NA | 返回一个三元素的元组,即显示在calendar里面的year、week、weekyday |
8 | isoformat() | 返回字符串类型,格式如 '2021-09-09' | 返回字符串类型,格式如 '12:20:33' | 返回字符串类型,格式如 '2021-07-20T12:20:33' |
9 | isoweekday() | 返回 int 类型,数字1-7代表周一到周日 | NA | 同date |
9 | replace | replace(year=newYear,month=newMonth,day=newDay),更新数值,返回 date 类型的实例 | replace(hour=x,minute=y,second=z, microsecond=a,tzinfo=t) 更新数值,返回 time 类型的实例 | replace(year=newYear,month=newMonth,day=newDay,hour=newHour,minute=newMinute,second=newSecond,microsecond=newMicrosecond), 更新数值,返回 datetime 类型的实例 |
10 | strftime(.....) | strftime(格式),按照既定格式输出字符串格式 | strftime(格式),按照既定格式输出字符串格式 | strftime(格式),按照既定格式输出字符串格式 |
11 | timetuple() | 返回的是time.struct_time类,(tm_year=xx, tm_mon=x, tm_mday=x, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=221, tm_isdst=-1) | NA | 同 date |
12 | today() | 返回 date 类型 | NA | 返回 datetime 类型 |
13 | toordinal() | 返回数值类型,提示是第几天 | NA | 返回 datetime 类型 |
14 | tzname() | NA | It uses an instance of the class and returns the time zone name of the datetime object passed, as a string. It is an instance method and works on an aware object. For a naive object, it returns None. | 同 time |
15 | utcoffset() | utcoffset(...) Return self.tzinfo.utcoffset(self). | ||
16 | weekday() | 返回从0开始的数字,比如今天是星期5,那么返回的就是4 | NA | 同date |
附 python中时间日期格式化符号:
- %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)