与时间处理的有关模块有哪些
- time
- datetime
- calendar
在python中,通常用时间戳、格式化的时间字符串和元组3种方式表示时间
时间戳
- 时间戳(timestamp)表示从1970年1月1日00时00分00秒开始计算的偏移量
就是从那个时间开始到现在的总毫秒数。
import time
now = time.time()
print(now)
最后输出的就是总毫秒
struct_time 元组
python的时间元组
序号 | 属性 | 字段 | 值 |
---|---|---|---|
0 | tm_year | 4位数年 | 如2008 |
1 | tm_mon | 月 | 1~12 |
2 | tm_mday | 日 | 1~31 |
3 | tm_hour | 小时 | 1~23 |
4 | tm_min | 分钟 | 0~59 |
5 | tm_sec | 秒 | 0~61(60或者61是闰秒) |
6 | tm_wday | 一周的第几日 | 0~6(0是周一) |
7 | tm_yday | 一年的第几日 | 1~366(儒略历) |
8 | tm_isdst | 夏令时 | -1,0,1,-1是决定是否为夏令的旗帜 |
time 模块
time()函数用于返回当前时间的时间戳
import time # 导入时间模块
now = time.time() # 第一个time代表时间的这个模块,后面time()代表函数,次函数不需要传参数
print(now)
localtime([secs])函数
localtime()函数的作用是格式化时间戳为本地时间,如果secs参数未输入,就以当前时间为转换标准.
import time # 导入时间模块
# time.localtime()中time为模块,localtime()为函数,次函数不穿参数就以现在的时间戳为参数,返回的是一个struct_time元组
print('time.localtime():{}'.format(time.localtime()))
gmtime([secs])函数
gmtime()函数用于将一个时间戳转换为UTC时区(0时区)的struct_time,可选的参数secs表示从unix元年到现在总秒数。但,gmtime()的默认值为time.time(),函数返回time.struct_time类型的对象。
import time # 导入时间模块
print(time.localtime())
print(time.gmtime()) #返回的是函数默认值,即time.time()的struct_time的类型对象的UTC时间。
如图:上面为本地时间,下面一个为UTC时间
mktime(t)
mktime()函数用于执行与gmtime()、localtime()相反的操作,接收struct_time对象为参数,返回用秒数表示时间的浮点数。如果输入的值不合法,就会触发oberflowerror或者valueerror。
import time # 导入时间模块
t = (2018,9,18,19,39,30,3,4,5) # 输入一个结构化时间或者完整的9位数元组元素
print(time.mktime(t))
asctime([t]) 函数
asctime([t])用于接手时间元组并且返回一个可读的形式为Sun Sep 24 08:09:45 2015(2016年9月24日 周日8时09分45秒)的字符串。
ctime([secs])函数
ctime()函数用于把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果未指定参数,就会默认将time.time()作为参数。ctime相当于asctime(localtime())。
import time # 导入时间模块
print(time.ctime(time.time())) # 对现在的时间戳返,回一个可读形式的时间如下图。
sleeptime([secs])
sleep 函数用于推迟调用线程的运行,可以通过参数secs指定进程挂起的时间。
import time # 导入时间模块
print(time.asctime()) # 设置一个对比进程开始的时间
time.sleep(10) # 推迟调用线程的运行,推迟10秒
print(time.asctime()) # 再次查看推迟之后的时间
# 结果如下图。
clock()函数
clock()函数是用于浮点数计算的秒数,返回cpu当前的时间,用来衡量程序的耗时。unix上为“进程时间”。
import time #导入时间函数
for i in range(100000): #写一个for 循环
print(i)
print(time.clock()) # 返回进程的耗时
strftime()函数
strftime()函数用于接受时间元组,并返回可读字符串表示当地时间,格式由参数format 决定。
import time # 导入时间模块
t = (2018,9,18,19,39,30,3,4,5) # 写一个结构化时间或9位元素元组
t = time.mktime(t) # 转换为时间秒数
print(time.strftime('%b %d %Y %H:%M:%S',time.localtime(t))) # 返回可读字符串的当地时间,其中time.localtime()函数会把秒数转化为当地的一个结构化时间
strptime()函数
strptime()函数用于根据指定的格式把一个时间字符串解析为时间元组
import time # 导入time模块
t = ('2018-09-09','%Y-%m-%d') #定义一个时间字符串,后面跟着其多对应的时间格式,要切记,当用‘-’连接时,后面格式就用'-',如何是/,后面也用/
print(t)
三种时间格式的相互转化
format string-->(time.strptime())-->struct_time-->(time.gmtime())-->timestamp
timestamp-->(time.localtime())-->struct_time-->(timee.strptime())-->format time
struct_time-->(time.asctime())-->%a %b %d %H:%M:%S %Y 串<--(timee.ctime())--timestamp
datetime模块。
datetime是date和time 的结合体,功能强大,支持从0001年到9999年。即datetime.MINYEAR和datetime.MAXYEAR。
datetime模块下的5个类:
- datetime.date 表示日期的类。常用的属性有,year,month,day
- datetime.time 表示时间的类。常用的属性有 hour,minute,second,microsecond
- datetime.datetime 表示日期时间。
- datetime.timedelta 表示时间间隔,即两个时间点之间的长度
- datetime.tzinfo 与时区有关的相关信息。
其中datetime.datetime类应用最为普遍和广泛。
taday()
datetime.datetime.today() 表示返回一个当前的本地时间的datetime对象。
import datetime # 导入datetime模块
print(datetime.datetime.today()) #datetime.datetime是类
now()
和tadoy()基本相似,却别就是now()接受参数,如果不写,默认为当地时间,或者传入一个参数所指时区的本地时间。
import time
print(datetime.datetime.now()) # 在此没有传入参数,则默认为所在时区所指的本地时间。返回结果的形式和today()相同,类型都是datetime.datetime类
datetime.utcnow()
返回一个当前utc(0时区)的时间对象.
import datetime
print(datetime.datetime.utcnow()) #返回一个utc时间的datetime类。类型为datetime.datetime
fromtimestamp(timestamp[,tz])
根据时间戳创建一个datetime对象,tz为指定时区信息
import datetime,time # 导入了两个模块,一个time用于获取时间戳
print(datetime.datetime.fromtimestamp(time.time())) #参数tz我们提供一个当前时间的时间戳
utcfromtimestamp(timestamp)
根据时间戳创建一个datetime类,不过返回的是utc时间的对象。
import time
print(datetime.datetime.utcfromtimestamp(time.time()))
对比fromtimestamp()和utcfromtimestamp()
strptime(date_string,format)
将格式字符串转换为datetime对象,date_string值日期字符串,format为格式化方法
import datetime
d_t = datetime.datetime.now()
print("strptime 是",datetime.datetime.strptime(str(d_t),'%Y-%m-%d %H:%M:%S.%f'))
print("strptime 是",datetime.datetime.strptime('2018-09-09 20:34:25','%Y-%m-%d %H:%M:%S'))
strftime(format)
把时间转为字符串格式,即str类
import datetime
now = datetime.datetime.now() #获取现在的本地的时间
print(now)
now_str = datetime.datetime.strftime(now,'%Y-%m-%d %H:%M:%S') # 把时间转为字符串格式
# datetime.datetime.strptime() # (cls,date_str,format) # 把字符串转为时间类型
print(now_str)
print(type(now_str)) #可以看出now_str 为str类
n_day = '2017/8/20'
time = now - datetime.datetime.strptime(n_day,'%Y/%m/%d') #这个可以看出当时间为datetime.datetime类时,时间可以进行相互计算。
print(time)