简介
time模块与datetime模块区别:
time模块是通过调用C库实现的,所以有些方法在某些平台上可能无法调用,但是其提供的大部分接口与C标准库time.h基本一致。与time模块相比,datetime模块提供的接口更直观、易用,功能也更加强大。
UTC与DST:
UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。
DST(Daylight Saving Time)即夏令时。是一种为节约能源而人为规定地方时间的制度,一般在天亮早的夏季人为将时间提前一小时
时间元组
Python时间函数将时间处理为9个数字的元组,各个索引所代表的字段及取值范围如下所示:
索引 | 字段 | 值 |
0 | 4位数,表示年份 | 2018,2019… |
1 | 月份 | 1 ~ 12 |
2 | 日期 | 1 ~ 31 |
3 | 小时 | 0 ~ 23 |
4 | 分钟 | 0 ~ 59 |
5 | 秒 | 0 ~ 61(60或61是闰秒) |
6 | 星期几 | 0 ~ 6(0是星期一) |
7 | 一年的第几天 | 1 ~ 366(朱利安日) |
8 | 夏令时 | 1,0,1,-1是决定是否为夏令时的旗帜 |
上面的元组相当于struct_time结构。此结构具有以下属性:
索引 | 字段 | 值 |
0 | tm_year | 2018,2019… |
1 | tm_mon | 1 ~ 12 |
2 | tm_mday | 1 ~ 31 |
3 | tm_hour | 0 ~ 23 |
4 | tm_min | 0 ~ 59 |
5 | tm_sec | 0 ~ 61(60或61是闰秒) |
6 | tm_wday | 0 ~ 6(0是星期一) |
7 | tm_yday | 1 ~ 366(朱利安日) |
8 | tm_isdst | 1,0,1,-1是决定是否为夏令时的旗帜 |
可用如下图示表示:
time模块
time模块,它提供了处理时间和表示之间转换的功能。
1.获取当前时间
2.时间戳与时间元组转换
time.ctime([secs]) | 把时间戳转化为时间元组 |
time.gmtime([secs]) | 把时间戳转化为格林威治天文时间下的时间元组 |
time.mktime(tupletime) | 把时间元组转化为时间戳 |
3.获取格式化的时间
你可以根据需求选取各种格式,把
4.其它方法和属性
time.clock() | 用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。 由于该方法依赖操作系统,在 Python 3.3 以后不被推荐,而在 3.8 版本中被移除,需使用下列两个函数替代。 time.perf_counter() # 返回系统运行时间 time.process_time() # 返回进程运行时间 |
time.sleep(secs) | 暂停时间秒 |
time.tzset() | 根据环境变量TZ重新初始化时间相关设置。 |
Datetime模块
datetime模块包含以下类classs。
date(cls, year, month=None, day=None)
time(cls, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
datetime(cls, year, month=None, day=None, hour=0, minute=0, second=0,microsecond=0, tzinfo=None, *, fold=0)
timedelta(cls, days=0, seconds=0, microseconds=0,milliseconds=0, minutes=0, hours=0, weeks=0)
常用操作:
from datetime import date
from datetime import datetime
from datetime import timedelta
# 计算两个日期相差多少天
d1 = date(2018, 10, 18);
d2 = date(2017, 12, 31);
print("(2018, 10, 18)与(2017, 12, 31)相差:", (d1 - d2).days, "天!");
# 获取两个日期时间的时间差
time1 = datetime(2019, 1, 13, 12, 0, 0);
time2 = datetime.now();
differtime = (time1 -time2).total_seconds();
print("(2019,1,13,12,0,0)与当前时间相差:", differtime, "秒!");# 输出结果
# 当前日期
curdate = date.today();
print("curdate =",curdate);
# 计算十天之后的日期时间
nowday = datetime.now();
# timedelta类可以很容易地算出前几天和后几天的时刻。(timedelta(days= d, hours= h))
# 还可以查看第几周对应的时间,例如:timedelta(weeks=20) 20周将被自动转化为天数
# 前几天时刻,用减法。 后几天时刻,则用当前时间加上timedelta(days = d, hours= h)
lastday = nowday + timedelta(days=10);
print(str(lastday));
print(lastday.ctime());# ctime() 返回一个表示日期和时间的字符串。
# 查看某一天是今年的第几天和第几周
testday = date(2017, 8, 31);
print(testday.isocalendar());# isocalendar() 函数返回三元组 分别为:年份,周数,周几
print(testday.timetuple());# timetuple() 返回时间元祖
日历(Calendar)模块
calendar模块提供与日历相关的功能,包括为给定的月份或年份打印文本日历的功能。
以下是calendar模块可用的功能函数列表
序号 | 函数 | 描述 |
1 | Calendar(year,w = 2,l = 1,c = 6) | 返回一个具有年份日历的多行字符串格式化为三列,以c个空格分隔。 w是每个日期的字符宽度;每行的长度为21 * w + 18 + 2 * c,l是每周的行数。 |
2 | firstweekday( ) | 返回当前设置每周开始的星期。默认情况下,当日历首次导入时设置为:0,表示为星期一。 |
3 | isleap(year) | 如果给定年份(year)是闰年则返回True;否则返回:False。 |
4 | leapdays(y1,y2) | 返回在范围(y1,y2)内的年份中的闰年总数。 |
5 | Month(year,month,w = 2,l = 1) | 返回一个多行字符串,其中包含年份月份的日历,每周一行和两个标题行。 w是每个日期的字符宽度;每行的长度为7 * w + 6。 l是每周的行数 |
6 | Monthcalendar(year,month) | 返回int类型的列表。每个子列表表示一个星期。年份月份以外的天数设置为0;该月内的日期设定为月份的第几日:1 ~ 31 |
7 | Monthrange(year,month) | 返回两个整数。第一个是年度月(month)的星期几的代码;第二个是当月的天数。表示星期几为0(星期一)至6(星期日);月份是1到12 |
8 | Prcal(year,w = 2,l = 1,c = 6) | 类似于:calendar.calendar(year,w,l,c)的打印 |
9 | Prmonth(year,month,w = 2,l = 1) | 类似于:calendar.month(year,month,w,l)的打印 |
10 | setfirstweekday(weekday) | 将每周的第一天设置为星期几的代码。星期几的代码为0(星期一)至6(星期日)。 |
11 | timegm(tupletime) | time.gmtime的倒数:以时间元组的形式接受时刻,并返回与从时代(epoch)开始的浮点数相同的时刻。 |
12 | weekday(year,month,day) | 返回给定日期的星期几的代码。星期几的代码为0(星期一)至6(星期日);月数是1(1月)到12(12月)。 |
时间格式化符号
- %a 星期的简写。如 星期三为Web
- %A 星期的全写。如 星期三为Wednesday
- %b 月份的简写。如4月份为Apr
- %B月份的全写。如4月份为April
- %c: 日期时间的字符串表示。(如: 04/07/10 10:43:39)
- %d: 日在这个月中的天数(是这个月的第几天)
- %f: 微秒(范围[0,999999])
- %H: 小时(24小时制,[0, 23])
- %I: 小时(12小时制,[0, 11])
- %j: 日在年中的天数 [001,366](是当年的第几天)
- %m: 月份([01,12])
- %M: 分钟([00,59])
- %p: AM或者PM
- %S: 秒(范围为[00,61],为什么不是[00, 59],参考python手册~_~)
- %U: 周在当年的周数当年的第几周),星期天作为周的第一天
- %w: 今天在这周的天数,范围为[0, 6],6表示星期天
- %W: 周在当年的周数(是当年的第几周),星期一作为周的第一天
- %x: 日期字符串(如:04/07/10)
- %X: 时间字符串(如:10:43:39)
- %y: 2个数字表示的年份
- %Y: 4个数字表示的年份
- %z: 与utc时间的间隔 (如果是本地时间,返回空字符串)
- %Z: 时区名称(如果是本地时间,返回空字符串)
- %%: %% => %
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END