在这里想做一个初学者的教程,会不断的更新下去,把学到的有关Python时间处理的内容总结起来。初学者笔记最重要的有两点,一个是要简洁,不要长篇大论,把要点讲明白就行,第二个是要符合二八原则,尽量抓住关键的东西,不要过分的追求大而全,优先掌握关键的20%内容就很可以了。
Python时间处理,绕不过去的就是time模块,虽然这个模块用来做时间处理并不是很便捷,但是作为Python的内置模块,还是需要掌握基本的用法的。
学习时间处理,我们首先要理解,什么是时间?
关于时间的概念,简单来说,分为两个意思,时刻和时长。时刻就是时间坐标轴上的一个点,时长是一个线段。
time模块是基本用法是用来处理时刻的,在time模块中,时刻有3种表示方式
明确这3个概念,然后就可以学习time模块的几个基本的方法。
time.time()
返回一个浮点数,获取当前时间戳。
time.mktime(arg)
接收一个时间元组参数,返回对应的时间戳。
time.localtime(arg)
接收一个时间戳参数,返回对应的时间元组对象。不带参数,返回当前时刻对应的时间元组对象。
time.strftime(format_string,struct_time)
format_string表示一个格式化字符串的表示方式,用%Y表示4位年份,%m表示月,%d表示日,%H表示时,%M表示分,%S表示秒。通过不同的组合,来表示想要的字符串格式,例如使用"%Y-%m-%d %H:%M:%S"来表示"2021-01-01 10:00:00"这种格式,使用"%Y年%m月%d日"来表示"2021年1月1日"这种格式。
struct_time是一个时间元组。整个方法就是把一个时间元组按照指定格式,返回一个字符串。不带struct_time参数的时候,默认指当前时刻。
time.strptime(time_string,format_string)
将一个时间字符串转化成对应的时间元组。time_string和format_string要格式对应才能正确转换。
time.sleep(n)
这个方法,让当前线程沉睡(挂起)n秒。
简单总结一下,我感觉time模块掌握这6个方法就够了。time.time和time.sleep单独记,time.mktime和time.localtime是时间戳和时间元组的相互转换,time.strftime和time.strptime是字符串和时间元组的相互转换。
最后补充一个内容,就是时间元组对象struct_time对象的使用。struct_time对象可以简单理解为(tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst)这样一个包含9个元素的元组。可以使用元组下标的方式获取元素的值,也可以使用obj.tm_year属性的方式获取指定的值。
相比time模块,datetime模块在使用起来更方便,也更常用。
使用datetime模块,学会使用其中的datetime类和timedelta类就足够了。
datetime类是datetime模块中表示日期时间的类,还有两个date类和time类,用法大同小异,不用单独学习。
导入使用: from datetime import datetime
学习一个类的使用,一般从两个方面,一是实例对象的创建,二是对象的属性和方法。
datetime类实例对象的创建
dt = datetime(year,month,day,hour,minute,second)
通过构造函数指定具体的数值来创建,以上参数默认值都是0.
dt = datetime.today() 或者 dt = datetime.now()
获取当前时刻的dt对象。
dt = datetime.fromisoformat(string)
通过string='2021-01-01 10:30:00'标准格式获取dt对象。
dt = datetime.fromtimestamp(n)
通过指定一个时间戳来创建。
dt = datetime.strptime(string,format_string)
类似time.strptime,将一个字符串转化成dt对象。
datetime类实例对象的属性
dt.year/dt.month/dt.day/dt.hour/dt.minute/dt.second
datetime类实例对象的方法
dt.isoformat() 返回标准字符串
df.isoweekday() 返回星期几
dt.timetuple() 返回time.struct_time类型
dt.strftime(format_string) 返回指定格式字符串
dt.timestamp() 返回对应的时间戳
前面说的时间类型都是时刻表达,下面说的timedelta类是时长的表达。
创建timedelta类实例对象
td = 两个时间对象的差值
td = timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
根据相应的时长来创建,比如,我想创建一个相距3天10小时的时长,就可以这样:
td = timedelta(days=3,hours=10)
timedelta对象的属性
td.days、td.seconds、td.microseconds只有这3个属性,其他的需要进行换算。
timedelta对象的方法
td.total_seconds()
是一个浮点数,表示td对象中包含的总秒数。