python编程中,处理时间和日期是很常见的,并且python也提供了多种方式处理时间及日期,比如time模块、datetime模块。本文我们主要选择python常见的内置模块time模块进行讲解,让你可以在时间、日期处理上手到擒来。python中,有三种表示时间的方式:
1、时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。时间戳时间通常是给机器看的。
2、结构化的时间(struct_time):struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)。通常是作为时间戳时间与格式化时间互转的一种中间状态。
3、格式化的时间:字符串(Format String)。通常是给人看的。
这三种时间方式间的转换关系如下图所示:
以下通过实际例子并且结合三种时间转化之间的关系进行time模块的使用说明。
实例1代码如下所示:
#encoding:UTF-8import time"""1、时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。2、结构化的时间(struct_time):struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)3、格式化的时间:字符串(Format String)"""#1、时间戳时间,float数据类型,格林威治时间---给机器看 #英国伦敦时间:1970-1-1 0:0:0到现在为止的每一秒 #北京时间:1970-1-1 08:0:0到现在为止的每一秒print(time.time()) #打印当前的时间戳:1596269599.8650055#结构化时间---时间戳时间转化成格式化时间的一种中间状态 #时间对象,能够通过.属性名来获取对象中的值 # gmtime([secs]) 和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。time_obj=time.localtime()print(time.localtime()) #获取当前的结构化时间:time.struct_time(tm_year=2020, tm_mon=8, tm_mday=1, tm_hour=16, tm_min=13, tm_sec=19, tm_wday=5, tm_yday=214, tm_isdst=0)print(time_obj.tm_year) #获取结构化时间中的某一个时间,即获取年:2020print(time_obj.tm_mon) #获取结构化时间中的某一个时间,即获取月:8#3、格式化时间,字符串时间,str数据类型----给人看 #可以根据你需要的格式来显示时间print(time.strftime("%Y-%m-%d")) #显示格式为:年-月-日 2020-08-01print(time.strftime("%Y-%m-%d %H:%M:%S")) #显示格式为:年-月-日 时:分:秒 2020-08-01 16:13:19
以上代码执行结果如下所示:
实例2代码如下:
#encoding:UTF-8import time#获取时间戳时间print(time.time()) #当前时间戳:1596269801.2465239#获取结构化时间time_obj=time.localtime(1569342327) #赋予一个时间戳参数,生成该时间戳对应的结构化时间,不加参数,默认就是当前的时间戳对应的结构化时间。print(time_obj) #time.struct_time(tm_year=2019, tm_mon=9, tm_mday=25, tm_hour=0, tm_min=25, tm_sec=27, tm_wday=2, tm_yday=268, tm_isdst=0)#获取格式化时间format_time=time.strftime("%Y-%m-%d %H:%M:%S",time_obj)print(format_time) #格式化时间为:2019-09-25 00:25:27#给定格式化时间:2018-10-1 08:08:08struct_time=time.strptime("2018-10-1 08:08:08","%Y-%m-%d %H:%M:%S") #生成格式化时间对应的结构化时间print(struct_time) #time.struct_time(tm_year=2018, tm_mon=10, tm_mday=1, tm_hour=8, tm_min=8, tm_sec=8, tm_wday=0, tm_yday=274, tm_isdst=-1)#生成结构化对应的时间戳时间print(time.mktime(struct_time)) #2018-10-1 08:08:08对应的时间戳时间为:1538352488.0
以上代码执行结果如下所示:
上述例子中用到的时间日期格式化符号格式如下:
%y:两位数的年份表示(00-99)
%Y:四位数的年份表示(0000-9999)
%m:月份(01-12)
%d:月内中的一天(0-31)
%H:24小时制小时数(0-23)
%I:12小时制小时数(01-12)
%M:分钟数(00=59)
%S:秒(00-59)
%a:本地简化星期名称
%A:本地完整星期名称
%b:本地简化的月份名称
%B:本地完整的月份名称
%c:本地相应的日期表示和时间表示
%j:年内的一天(001-366)
%p:本地A.M.或P.M.的等价符
%U:一年中的星期数(00-53)星期天为星期的开始
%w:星期(0-6),星期天为星期的开始
%W:一年中的星期数(00-53)星期一为星期的开始
%x:本地相应的日期表示
%X:本地相应的时间表示
%Z:当前时区的名称
%%:%号本身
以上关于time模块的处理时间日期的用法,相信在大家自己动手写写就能够掌握了。