我们可以通过学习在Python中对日期时间的处理,可以在快速的完成工作,比如:
- 将日期时间作为日志信息的内容输入
- 计算某一个功能的执行时间
- 用日期命名一个文件的名称
- 记录或者展示文件的发布或修改时间
- 其他工作
在Python的程序可以使用很多的方式处理日期和时间,转换日期格式是一个常见的功能。Python中提供了一个time和calender的模块可以用来做格式化日期和时间的。时间间隔都是以秒为单位的浮点小数。
在电脑中的时间都是由CPU储存,所以一般呢也叫做CPU时间, cpu时间是计算从1970年1月1日0点0分到目前这个时间点所经历的的秒数来表示,同时又可以称为时间戳。
1.time模块
1.1导入time模块
首先使用import导入time模块
1.2查看时间戳
使用time.time函数查看当前的时间戳为多少,time.time的作用是返回当前时间的时间戳
1.3返回当地时间
使用time.localtime函数,将当前时间戳返回为本地的时间,返回的参数有9个:
序号属性字段值0Tm_year4位数年20081tm_mon月1-122tm_mday日1-313tm_hour小时0-234tm_min分钟0-595tm_sec秒0-61(60或61 是闰秒)6tm_wday一周的第几日0-6(0为周一)7tm_yday一年的第几日1-365(儒略历)8tm_isdst夏令时-1,0,1 -1是决定是否为夏令时的旗帜
可以通过这9个返回的参数判断当前的时间
1.4暂停代码运行时间
time.sleep暂停代码的运行时间,time.sleep函数的作用是推迟调用线程的运行,可以通过参数Secs指秒数,表示进程挂起的时间。
1.5计算时间点
函数time.clock是以浮点数计算的秒数返回当前的CPU时间。这个函数在不同的系统上的含义也是不同的, 在UNIX系统上,它返回的是"进程时间",它是用秒表示的浮点数(时间戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间。(实际上是以WIN32上QueryPerformanceCounter为基础,它比毫秒表示更为精确)
1.6获取格式化的时间
我们可以根据需求选取各种格式,但是最简单的获取可读的时间模式的函数是asctime:
Time.asctime函数接受时间元组并返回一个可读的形式”5月7日,周天,13点20分26秒,2017年”的24个字符的字符串。参数是9个元素的元组或者通过函数Gmtime或localtime函数返回的时间值。
1.7格式化日期
通过time模块中strftime方法来格式化日期:
image
Time.strftime函数接收时间元组,并返回以可读字符串表示薪资的时间,格式的话由参数format决定。
1.8解析时间
Time.strptime(str,fmt=’%a %b %d %H:%M:%S %Y’)根据fromt的格式把一个时间字符串解析为时间元组。
image在Python中有22个时间日期的格式化符号,通过这些符号就可以设置参数format了:
- %y 两位数的年份表示(00-99)
- %Y 四位数的年份表示(000-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 当前时区的名称
- %% %号本身
2.Calendar模块
Calendar模块是与日历相关的模块,但也有很广泛的方法来处理年历和月历,例如打印某月的月历:
image
使用claendar.month函数生成月份的日历。
在claendar模块中有12种函数,是比较常用的:
2.1 calendar.calendar(year,w=2,I=1,c=6,m=3)
返回一个多行字符串格式的year年年历,3个月为一行,间隔距离为c,每日宽度间隔为w字符,每行长度为21w+18+2c,i是每星期行数
image
2.2calendar.firstweekday
2.3calendar.isleap(year)
2.4calendar.leapdays(y1,y2)
2.5calendar.month(year,month,w=2,i=1)
返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符,每行的长度为7*w+6,I是每星期的行数。
image
2.6calendar.monthcalendar(year,month)
返回一个整数的单层嵌套列表,每个子列表装载代表一个星期的整数,year年month月外的日期都设为0,范围内的日子都由该月第几日表示,从1开始。
Python直播学习群:556370268,这里有资源共享,技术解答,还有小编从最基础的Python资料到项目实战的学习资料都有整理,希望能帮助你更好的学习python。
2.7 calendar.monthrange(year,month)
返回两个整数,第一个是该月第一天是星期几的日期码,第二个是该月天数的日期码,天是从0(星期一)到6(星期日);月是从1-12。
2.8calendar.prcal(year,w=2,i=1,c=6)
相当于是print(calendar.calendar(year,w,I,c))
image
2.9calendar.prmonth(year,month,w=2,i=1)
相当于print(calendar.calendar(year,w,I,c))
image2.10 calendar.setfirstweekday(weekday)
设置每周的起码日期码。0(星期一)到6(星期日)
2.11 calendar.timegm(tupletime)
和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间戳(1970年后的浮点秒数)
2.12 calendar.weekday(year,month,day)
返回给定日期的日期码。0(周一)到6(周日),月份为1-12。
3.datetime模块
Datetime模块是Python处理日期和时间的标准库
3.1获取当前的日期
image
Datetime.now函数的作用是返回当前日期和时间,返回的类型是datetime
3.2获取指定日期和时间
如果要指定某个日期和时间呢,我们直接用参数构造一个datetime也是可的:
通过datetime函数,直接输入年月日时分的参数,来构造一个指定的日期和时间
3.3datetime转换为timestamp
在计算机中,时间实际上是用数字表示的,我们把1970年1月1日,00:00:00 UTC+00;00时区的时刻成为epoch time,记为0(1970年之前的时间戳为负数),当前时间就是相对于Epoch time的秒数,可以成为timestamp。
可以理解为:
Timestamp = 0 = 1970-1-1 00:00:00 UTC+0:00
拓展知识UTC 和 Epoch time
UTC time,Coordinated Universal Time,世界标准时间又称为格林尼治时间,与UTCTime对应的是各个时区的localtime,东N区的时间比UTC时间早N个小时因此UTC+N小时,即为东N区的本地时间;而西N区时间比UTC时间玩N个小时,即UTC time – N小时即为西N区的本地时间;中国在东8区,因此比UTC时间早了八个小时,可以以UTC+8进行表示。
Epoch time表示时间开始的七点;是一个特定的时间,不同平台上的时间点不同,对于Unix而言,epoch time 为1970-01-01 00:00:00 UTC
首先转换为时间戳格式
将时间戳格式的时间转换为字符串日期时间
设置时间的格式
3.4 datetime加减
对于日期和时间进行加减实际上呢就是把日期时间datetime往后或者往前计算,得到新的日期时间datetime。加减可以直接运用+和-预算符,不过需要呢导入timedelta这个datetime模块下的类
在现在的时间加上10个小时的时间
在现在的时间上减去一天的时间
在现在的时间上加上2天12小时的时间
Python直播学习群:556370268,这里有资源共享,技术解答,还有小编从最基础的Python资料到项目实战的学习资料都有整理,希望能帮助你更好的学习python。
网友评论