Python标准库中提供了时间和日期的支持:
calendar:日历相关;
time、datetime:时间相关;
time模块
时间的主要三种表示方式:
时间戳:1970-1-1至今的秒数(float),time.time();
格式化时间字符串:如'2018-11- 07 20:23',time.strftime('%Y-%m-%d');
结构化时间time.struct_time:包含年月日等的元组,time.localtime();
struct_time是一个9元组:
time模块中主要函数:
time.time():返回当前时间的时间戳(1970纪元后经过的浮点秒数);
time.mktime(tupletime):接受时间元组(struct_time),并返回时间戳;
time.localtime([secs]):接受时间辍(默认为当前时间),并返回当地时间下的时间元组t;
time.gmtime([secs]):接受时间辍(默认为当前时间)并返回格林威治时间的时间元组t(t.tm_isdst始终为0);
time.mktime(tupletime):接受时间元组并返回时间辍;
time.strftime(fmt[,tupletime]):接受时间元组(默认当前时间),并返回以可读字符串表示的当地时间,格式由fmt决定;
time.strptime(str,fmt='%a %b %d %H:%M:%S %Y'):根据fmt的格式把一个时间字符串解析为时间元组;
time.asctime([tupletime]):接受时间元组并返回一个可读的形式为"Thu Nov 8 09:31:15 2018"的24字符的字符串;
time.ctime([secs]):作用相当于asctime(localtime(secs)),未给参数相当于asctime();
time.tzset():根据环境变量TZ重新初始化时间相关设置
休眠及运行时间
time.sleep(secs):休眠指定的秒数(float,0.001则1毫秒);
time.perf_counter():返回计时器的精准时间(系统的运行时间),包含系统的睡眠时间;一般使用多次调用的结果之差;
time.clock( ):用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用(3.3后用perf_counter);
时间格式:
datetime模块
datetime模块中包含如下类:
date:日期对象,常用的属性有year, month, day
time:时间对象
datetime:日期时间对象,常用的属性有hour, minute, second, microsecond
datetime_CAPI:日期时间对象C语言接口
timedelta:时间间隔,即两个时间点之间的长度
tzinfo:时区信息对象
包含的常量:
datetime.MAXYEAR:返回能表示的最大年份9999;
datetime.MINYEAR:返回能表示的最小年份1;
date对象
由year年份、month月份及day日期三部分构成:
date(year,month,day)
静态成员(获取时间):
date.today():当前日期
date.fromtimestamp(stamps):把时间戳转换为日期
date.fromordinal(days):把天数(公元1年1月1日为1)转换为date类型;
成员函数:
strftime(fmt):格式化输出,格式化参数参见time部分;直接print(t)则输出'2018-11-08';
ctime():相当于%c的格式化输出(24字符串)
isocalendar():返回(year,month,day)三元组;
isoformat():返回‘2018-10-27'样式字符串;
isoweekday(): 返回符合ISO标准星期数(周一为1…周日为7) ;
weekday(): (周一为0…周日为6);
toordinal(): 返回公元公历开始到现在的天数;公元1年1月1日为1;
timetuple():返回一个类型为time.struct_time的数组,但有关时间的部分元素值为0;
日期可比较大小,以及加减:
两日期差:返回timedelta,(x-y).days返回相差天数;
日期+timedelta:返回新的日期;
time类
由hour小时、minute分钟、second秒、microsecond毫秒和tzinfo五部分组成
time([hour[, minute[, second[, microsecond[, tzinfo]]]]])#默认time(0,0)
成员函数:
strftime(fmt):格式化输出,格式化参数参见time部分;
isoformat():返回类'10:21:26.377219'字符串;
datetime类
可以看做是date类和time类的合体,其大部分的方法和属性都继承于这两个类
datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])
静态成员(获取时间):
datetime.now():当前日期时间
datetime.combine(date,time):使用日期、时间对象获取datetime对象;
datetime.utcnow():当前日期时间的时间元组;
datetime.strptime(tstr, fmt):根据参数构造对象;
datetime.utcfromtimestamp(stamps):根据时间戳构造对象;
成员函数:
date():获取日期部分;
time():获取时间部分;
utctimetuple():返回时间元组;
timedelta类
用于表示两个datetime对象的差值
timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
包含如下属性:
days:天数
microseconds:微秒数(>=0 并且
seconds:秒数(>=0 并且
total_seconds():获取总的秒数
Calendar模块
此模块的函数都是日历相关的,星期一是默认的每周第一天,星期天是默认的最后一天。更改设置需调用calendar.setfirstweekday()函数。
函数说明:
calendar.calendar(year,w=2,l=1,c=6):返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。 每日宽度间隔为w字符。每行长度为21* W+18+2* C。l是每星期行数。
calendar.firstweekday( ):返回当前每周起始日期的设置。默认情况下,首次载入caendar模块时返回0,即星期一。
calendar.isleap(year):是闰年返回True,否则为false。
calendar.leapdays(y1,y2):返回在Y1,Y2两年之间的闰年总数。
calendar.month(year,month,w=2,l=1):返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数。
calendar.monthcalendar(year,month):返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始。
calendar.monthrange(year,month):返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从1到12。
calendar.prcal(year,w=2,l=1,c=6):相当于 print calendar.calendar(year,w,l,c).
calendar.prmonth(year,month,w=2,l=1):相当于 print calendar.calendar(year,w,l,c)。
calendar.setfirstweekday(weekday):设置每周的起始日期码。0(星期一)到6(星期日)。
calendar.timegm(tupletime):和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间辍(1970纪元后经过的浮点秒数)。
calendar.weekday(year,month,day):返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)。
领取专属 10元无门槛券
私享最新 技术干货