python中与时间相关的一个模块是time模块,datetime模块可以看为是time模块的高级封装。
time模块中经常用到的有一下几个方法:
-
time()
用来获取时间戳,表示的结果为从1970年1月1日开始计算到现在时间之间的秒数。如:
time.time()
输出:1507727656.9446979 #今天是2017/10/11 21:15:00 -
localtime()
获取当前时间信息。包含年月日时分秒等等。返回结果以元组的形式返回。如:
time.localtime()
输出:time.struct_time(tm_year=2017, tm_mon=10, tm_mday=11, tm_hour=21, tm_min=14, tm_sec=16, tm_wday=2, tm_yday=284, tm_isdst=0)
将时间戳转换为日期格式:
time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(1521879629)) #当地时间
time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(1521879629)) #标准时间 -
strftime()
它可以将localtime()中获取的时间元组转换为自定义的日期时间格式进行。如:
time.strftime("%Y-%m-%d %H:%M:%S",struct_local_time)
输出:2017-10-10/11/17 21:14:16
其中%Y-%m-%D %H:%M:%S即为自定义的日期时间格式,字母有一下的含义:
%a 显示简化星期名称
%A 显示完整星期名称
%b 显示简化月份名称
%B 显示完整月份名称
%c 本地相应的日期和时间表示
%d 显示当月第几天
%H 按24小时制显示小时
%I 按12小时制显示小时
%j 显示当年第几天
%m 显示月份
%M 显示分钟数)
%p 本地am或者pm的相应符
%S 显示秒数)
%U 一年中的星期数
%w 显示在星期中的第几天,默认从0开始表示周一
%W 和%U基本相同
%x 本地相应日期
%X 本地相应时间
%y 去掉世纪的年份(00 - 99)
%Y 完整的年份
%Z 时区的名字(如果不存在为空字符)
%% ‘%’字符 -
gmtime()
可以将时间秒转换为日期时间,此时日期和时间表示的是标准时间,北京时间为标准时间加上8个小时。不传入参数代表当前时间即转换time()函数的结果。如:
time.gmtime()
输出:time.struct_time(tm_year=2017, tm_mon=10, tm_mday=11, tm_hour=13, tm_min=34, tm_sec=13, tm_wday=2, tm_yday=284, tm_isdst=0)
当传入参数时。如:
time.gmtime(1403127843)
输出:time.struct_time(tm_year=2014, tm_mon=6, tm_mday=18, tm_hour=21, tm_min=44, tm_sec=3, tm_wday=2, tm_yday=169, tm_isdst=0) -
asctime()和ctime()
两个都会返回固定格式的当前日期和时间(Wed Oct 11 21:35:28 2017),但两个接收的参数不同。
asctime()接收的是元组格式的日期时间,而ctime()接收的是秒。然后都返回本地的格式化后的日期时间。如:
ctime(1403127843)
输出:Thu Jun 19 05:44:03 2014
asctime(time.localtime())
输出:Wed Oct 11 21:42:56 2017
当两个方法都不传入参数,返回的都为当前日期和时间:如:
Wed Oct 11 21:45:42 2017
Wed Oct 11 21:45:42 2017 -
mktime()
将元组形式的日期时间转换为秒的形式。必须有参数!如:
mktime(time.gmtime()) #time.gmtime()返回的为元组形式的标准时间。
输出:1507700832.0
关于datetime模块,使用的时候建议仅使用当中的now()方法。如:
-
datetime.datetime.now()
输出:2017-10-13 10:12:17.174169 -
timedelta()
timedelta 方法必须与其他方法配合使用,不能单独存在。参数有不同的形式。如:
datetime.datetime.now()+datetime.timedelta(3)
输出:2017-10-16 10:12:17.174169 #表示今天向后推3天,也可以为负数,表示向前推几天 -
此外还有另外的参数形式。如:
datetime.datetime.now()+datetime.timedelta(minutes=20)
输出:2017-10-13 10:32:17.174169 #表示现在的20分钟后
datetime.datetime.now()+datetime.timedelta(minutes=20,hours=2)
输出:2017-10-13 12:32:17.174669 #小时和分钟向后推