python的time时间模块

模块概述

1.一个.py文件就是一个模块

2.通过import语句在一个模块中导入另一个模块,import sys,print (sys.path),sys.path的结果为一个列表,列表的第一个元素为当前模块所在路径,在该模块中导入其他模块时,需要从当前模块所在路径为起点进行路径搜索

3.导入模块时python做了两件事:先将整个要被导入的.py文件、或被导入函数所在的.py文件执行一遍,再将.py文件名、或导入函数的名字导入,后续可直接通过import后面导入的名字进行引用

4.如下图结构所示,

如果a文件要导入b文件:from test import b或者import test.b,后续要引用b文件的函数时,前面必须带上b.或者test.b.

如果a文件要导入b文件中的函数:from test.b import 函数名,后面可直接通过函数名引用b的函数

5.在执行文件中__name__='__main__',在被调用文件中__name__等于相对于sys.path的路径+文件名

例如在上述文件情况下通过a导入b,print(__name__)在a和b中分别显示__main__、test.b

 6.__file__表示文件名

import os,os.path.abspath(__file__),返回文件的绝对路径和文件名

os.path.dirname(os.path.abspath(__file__)),返回文件的上一层目录

 

时间模块import time

python时间的三种表现形式

1.时间戳形式:time.time()表示从1970年1月1日0点到当前时间经历的秒数

2.结构化形式:time.localtime()和time.gmtime(),都返回一个时间对象,两者的区别在于tm_hour的显示,前者是当地时间,后者是世界标准时间

返回结果样例time.struct_time(tm_year=2018, tm_mon=11, tm_mday=12, tm_hour=16, tm_min=31, tm_sec=34, tm_wday=0, tm_yday=316, tm_isdst=0)

取返回值的某一项,time.localtime().tm_yday 

3.字符串形式:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())

4.三种表现形式的时间之间的转化

时间戳形式和结构化形式之间可以互相转化,结构化形式和字符串形式之间可以互相转化,但时间戳形式和字符串形式之间不能之间转化

时间戳形式→time.localtime()和time.gmtime()→结构化形式,参数可为空(为空表示time.time()),或者一个秒数

两者不加参数默认是将当前时间转化为结构化时间,即time.localtime(time.time()),time.gmtime(time.time())

加参数秒数转化为结构化时间time.localtime(1542028244)

 

结构化形式→time.mktime()→时间戳形式,一个结构化时间参数

time.mktime(time.localtime())、或者time.mktime(time.gmtime())

 

结构化形式→time.strftime()→字符串形式,两个参数,第一个为字符串表现格式,第二个为结构化时间

time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()),除月份m、日d,其他都是大写形式,%H:%M:%S时分秒可直接写成%X

当然字符串的表现形式可以自己定义

 

字符串形式→time.strptime()→结构化形式,两个参数,第一个为字符串时间,第二个为字符串表现格式

time.strptime('2018-11-12 21:00:00','%Y-%m-%d %H:%M:%S')

 

5.其他形式time.ctime(),time.asctime()

如果参数相同则返回结果完全相同,格式为Mon Nov 12 22:27:56 2018,区别在于time.ctime()默认是将当前时间戳时间转化为此样式的时间,而time.asctime()默认是将当前格式化时间转化为此样式的时间

 

时间模块datetime

使用该模块需要先导入import datetime

1.date()方法

datetime.date.today():得到的时间格式为yyyy-mm-dd,如果月和日为个位数,显示时会在前面补零

datetime.date(yyyy,mm,dd):将传入参数格式化为yyyy-mm-dd的时间,必须传入年、月、日三个参数,并且如果月和日为个位数只能传入个位数不能前补零

可通过.year、.month、.day获取年、月、日

两个date的差为时间差,<class 'datetime.timedelta'>

t1 = datetime.date.today()
t2= datetime.date(2019,5,18)  #月份不能传入05,否则会报错
print(t1,type(t1))
print(t2,t2.year,t2.month,t2.day)
t = t1-t2
print(t,type(t))
# 2019-07-25 <class 'datetime.date'>
# 2019-05-18 2019 5 18
# 68 days, 0:00:00 <class 'datetime.timedelta'>
date()方法

 

2.datetime方法

datetime.datetime.now():得到的时间格式为yyyy-mm-dd hh:mm:ss.xxxxxx,如果月、日、时、分和秒为个位数。显示时会在前面补零

datetime.date(yyyy,mm,dd[,hh:mm:ss]):将传入参数格式化为yyyy-mm-dd hh:mm:ss的时间,必须传入年、月、日三个参数,时分秒可以省略,默认为00:00:00,并且传参时前面不能补零。

可通过.year、.month、.day、.hour、.minute、.second获取年、月、日、时、分、秒

两个datetime的差时间差,<class 'datetime.timedelta'>

t1 = datetime.datetime.now()
t2 = datetime.datetime(2019,5,13)
t3 = datetime.datetime(2019,5,13,5,8,7,2345)
t = t1 - t2
print(t1,type(t1))
print(t2)
print(t3,t3.year,t3.month,t3.day,t3.hour,t3.minute,t3.second,t3.)
print(t,type(t))
# 2019-07-25 12:00:58.998696 <class 'datetime.datetime'>
# 2019-05-13 00:00:00
# 2019-05-13 05:08:07.002345 2019 5 13 5 8 7
# 73 days, 12:00:58.998696 <class 'datetime.timedelta'>
datetime()方法

 

3.timedelta()时间差

timedelta(),参数对应的分别是天、秒、微妙、毫秒、分、小时、周

now = datetime.datetime(2019,7,15)
delta = datetime.timedelta(10,30)   #10天,30秒
print(now)
print(delta)
print(now+delta)
print(now-delta)
# 2019-07-15 00:00:00
# 10 days, 0:00:30
# 2019-07-25 00:00:30
# 2019-07-04 23:59:30
timedelta()时间差

 

posted @ 2018-11-12 21:06  Forever77  阅读(316)  评论(0编辑  收藏  举报