python-datetime计算时间间隔

本文介绍了如何使用Python的datetime模块计算时间间隔,包括三天前、三天后、两小时之前和两小时之后的时间,以及计算两个时间点之间的时间差。此外,还展示了在系统监控场景下,如何获取主机信息(操作系统、主机名、内核版本、硬件架构)、开机时间和开机时长,以及当前登录用户的信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from datetime import date
from datetime import datetime

print(date.today())	#显示今天的年月日
print(datetime.now()) #显示年月日时分秒

输出:

2019-01-21
2019-01-21 19:15:45.623116
1.如何计算三天前的时间和三天后的时间?
from datetime import date, timedelta
from datetime import datetime
d = date.today()
delta = timedelta(days=3)
print(d + delta)
print(d - delta)

输出:

2019-01-24
2019-01-18

2.如何计算两个小时之前的时间? 两个小时之后的时间
from datetime import datetime
from datetime import timedelta

now_hour = datetime.now()
delta = timedelta(hours=2)
print(now_hour - delta)
print(now_hour + delta)

输出:
2019-01-21 18:23:29.649190
2019-01-21 22:23:29.649190
3.返回两个时间, 想计算两个时间之间的时间差
now_time = datetime.now()  # 对象 2019-01-21 20:31:59.944669
pwd_time = os.path.getmtime('/etc/passwd')  # 时间戳 1547115203.2562485
pwd_time_obj = datetime.fromtimestamp(pwd_time) # 将时间戳转换为字符串日期 2019-01-10 18:13:23.256248

delta = now_time - pwd_time_obj
print(delta)    

输出:

11 days, 2:18:36.688421

应用案例:
系统监控
需求:
1. 获取当前主机信息, 包含操作系统名, 主机名, 内核版本, 硬件架构等
2. 获取开机时间和开机时长;
3. 获取当前登陆用户

1. 获取当前主机信息, 包含操作系统名, 主机名, 内核版本, 硬件架构等
import os
    print('主机信息'.center(50,'*'))
    info = os.uname() 
    print("""
        操作系统:%s
        主机名:%s
        内核版本:%s
        硬核架构:%s
    
    """ %(info.sysname,info.nodename,info.release,info.machine))

输出:

***********************主机信息***********************

操作系统:Linux
主机名:foundation65.ilt.example.com
内核版本:3.10.0-514.el7.x86_64
硬核架构:x86_64
2. 获取开机时间和开机时长
import psutil
from datetime import datetime
print('开机信息'.center(50,'*'))
boot_time = psutil.boot_time()	# 返回时间戳
print('开机时间:',boot_time)

输出:

***********************开机信息***********************
开机时间: 1548040739.0

改成字符串格式:

#将时间戳转换为datetime类型的时间2019-01-15 08:59:01

print('开机信息'.center(50,'*'))
boot_time_obj = datetime.fromtimestamp(boot_time)
print('开机时间:',boot_time_obj)

输出:

***********************开机信息***********************
开机时间: 2019-01-21 11:18:59

now_time = datetime.now()
delta_time = now_time - boot_time_obj
print(type(delta_time))
print('开机时长:',delta_time)
print('开机时长' ,str(delta_time).split('.')[0]) # str是为了将对象转换为字符串, 实现分离;split分离是为了去掉毫秒

输出:

<class ‘datetime.timedelta’>
开机时长: 10:53:54.882409
开机时长 10:53:54

3. 获取当前登陆用户
print("当前登陆用户".center(50, '*'))
login_users = psutil.users()
print(psutil.users())
#集合生成式实现去重
print({user.name for user in login_users})

输出:

[suser(name='kiosk', terminal=':0', host='localhost', started=1548040832.0, pid=1784), suser(name='kiosk', terminal='pts/0', host='localhost', started=1548041984.0, pid=3573)]
{'kiosk'}

info = psutil.users()[0]
print(info)
print(type(info))

输出:

suser(name='kiosk', terminal=':0', host='localhost', started=1548040832.0, pid=1784)
<class 'psutil._common.suser'>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值