时间模块在编程实际应用中必不可少。时间表示的类型也多种多样,大致分为以下三种:
1)时间戳
2)字符串的时间
3)元组类型时间
应用 不同的时间类型需要导入不同的时间模块,如:
时间戳:time.time()
字符串:time.ctime()
元组类型时间:time.localtime()
一、时间表示的几种类型:
- 时间戳
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。 它的提出主要是为用户提供一份电子证据, 以证明用户的某些数据的产生时间。
import time
print('时间戳:',time.time())
2. 字符串类型
字符串类型时间比较常用比较简单
print('字符串类型时间:',time.ctime())
3. 元组类型时间表示
元组类型就是把时间用元组形式表示出来
print('元组类型时间:',time.localtime())
info = time.localtime()
print('显示年:',info.tm_year) #显示年
print('显示日:',info.tm_yday) #显示日 [元组类型时间表示
二、时间不同类型之间的转换
以获取/etc/passwd 的修改时间为例,首先编写代码最后一次修改时间,格式为时间戳格式:
import os
pwd_time = os.path.getatime('/etc/passwd')
print(pwd_time)
将时间戳转换为字符串类型
print('文件修改时间:',time.ctime(pwd_time))
将时间戳转化为元组类型
print('时间戳转化为元组类型:',time.localtime(pwd_time))
将元组类型时间转换为时间戳
tuple_time = time.localtime()
print("元组类型时间转换为时间戳:",time.mktime(tuple_time))
将元组的时间转换为字符串时间(可自定义格式)
tuple_time = time.localtime()
print("元组——字符串:年-月-日:",time.strftime('%Y-%m-%d', tuple_time))
print("元组——字符串:年-月-日 时:分:秒:",time.strftime('%Y-%m-%d %H:%M:%S', tuple_time))
将字符串时间转换为元组
mytime="2019/01/15"
print('字符串转化为元组:',time.strptime(mytime,'%Y/%m/%d'))
三、计算时间间隔
导入所需模块:
import os
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta #时间间隔
如何计算三天前的时间和三天后的时间
d = date.today()
delta = timedelta(days=3) #设置间隔时间 days=3
print('三天后',d + delta)
print('三天前',d - delta)
如何计算两个小时之前和两个小时之后的时间
h=datetime.now() #此刻时间
delta1=timedelta(hours=2)
print('两小时后',h + delta1)
print('两小时前',h - delta1)
返回两个时间,计算两个时间之间的时间差
now_time = datetime.now() #对象
pwd_time = os.path.getatime('/etc/passwd') #时间戳
print('当前时间:',now_time,'passwd文件最后一次修改时间',pwd_time)
pwd_time_obj=datetime.fromtimestamp(pwd_time)
delta = now_time - pwd_time_obj
print('时间差',delta)
四、应用案例——系统监控
需求:
1. 获取当前主机信息, 包含操作系统名, 主机名, 内核版本, 硬件架构等
2. 获取开机时间和开机时长;
3. 获取当前登陆用户
import os
import psutil #检测是否安装此模块,若无进行模块安装后再行导入
from datetime import date
from datetime import time
from datetime import datetime
1.获取主机信息
print("主机信息".center(20,'*'))
info = os.uname()
print("""
操作系统:%s
主机名:%s
内核版本:%s
硬件架构:%s
""" %(info.sysname,info.nodename,info.release,info.machine)) #此处变名名一定要和本机对应变量名一致
显示的主机信息中定义的变量名一定要和对应的本地主机信息名一致!
2.获取开机信息:包括开机时间和开机时长
需要先安装第三方环境psutil
print("开机信息".center(50,'*'))
print("开机时间",psutil.boot_time())
print("开机信息".center(50, '*'))
boot_time = psutil.boot_time() # 返回时间戳
# 将时间戳转换为datetime的时间
boot_time_obj = datetime.fromtimestamp(boot_time)
print(type(boot_time_obj))
print("开机时间: ", boot_time_obj)
now_time = datetime.now()
delta_time = now_time - boot_time_obj
# print(type(delta_time))
print("开机时长: ", str(delta_time).split('.')[0])
3.用户信息(获取当前登陆用户)
print("当前登陆用户".center(50,'*'))
login_users=psutil.users()
print({user.name for user in login_users})