一.时间的表示类型
1.时间戳 查看:stat +文件
(1)atime:文件内容被访问的时间戳
(2)mtime:文件内容被修改的时间戳
(3)ctime:文件内容或者属性被修改的时间戳
import os
import time
print(time.time())
1559993052.1023767
2.字符串时间
print(time.ctime())
Sat Jun 8 19:24:12 2019
3.元组类型的时间
print(time.localtime())
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=8, tm_hour=19, tm_min=24, tm_sec=12, tm_wday=5, tm_yday=159, tm_isdst=0)
获取元组时间的某一元素
info=time.localtime()
print(info.tm_year)
print(info.tm_mon)
2019
6
二.常用的时间转换
1.元组时间转换为时间戳
import time
import os
tuple_time = time.localtime()
print(tuple_time)
print(time.mktime(tuple_time))
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=8, tm_hour=19, tm_min=32, tm_sec=46, tm_wday=5, tm_yday=159, tm_isdst=0)
1559993566.0
2.元组时间转换为字符串时间
tuple_time = time.localtime()
print(time.strftime('%m-%d',tuple_time))
print(time.strftime('%Y-%m-%d',tuple_time)) ##年月日
print(time.strftime('%T',tuple_time)) ##时分秒
print(time.strftime('%F',tuple_time)) ##年月日
06-08
2019-06-08
19:36:32
2019-06-08
注意:
%Y 表示年
%y 表示年但会省略前两位数字
%m 表示月份
%d 表示天
%H 表示小时
%M 表示分钟
%S 表示秒
%X 表示固定的时间格式
%x 表示固定的日格式
%U 表示一年中第几周
%p 表示am、pm
%w 表示周几 0(周日)至6(周六)
3.时间戳类型转换为字符串时间
pwd_time = os.path.getctime('/etc/passwd') ##此文件内容或者属性被修改的时间戳
print('pwd_time',pwd_time)
print(time.ctime(pwd_time))
pwd_time 1559768949.2775428
Thu Jun 6 05:09:09 2019
4.时间戳转换为元组
pwd_time = os.path.getctime('/etc/passwd')
print('pwd_time',pwd_time)
print(time.localtime(pwd_time))
pwd_time 1559768949.2775428
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=6, tm_hour=5, tm_min=9, tm_sec=9, tm_wday=3, tm_yday=157, tm_isdst=0)
5.元组类型转换为是时间戳
tuple_time = time.localtime()
print(time.mktime(tuple_time))
1559994302.0tuple_time = time.localtime()
print(time.mktime(tuple_time))
6.字符串时间转换为元组时间
s = '2019-6-8'
print(time.strptime(s,'%Y-%m-%d'))
s_time = '11:48:25'
print(time.strptime(s_time,'%H:%M:%S'))
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=159, tm_isdst=-1) ##tm_isdst = 1为夏令时/0为非夏令时/-1为时间不确定是否为夏令时
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=11, tm_min=48, tm_sec=25, tm_wday=0, tm_yday=1, tm_isdst=-1)
三.datetime模块
import os
from datetime import date
from datetime import datetime
from datetime import timedelta
print(date.today()) ##获取今天时间
print(datetime.now()) ##获取当前时间
2019-06-08
2019-06-08 20:17:21.424211
1.计算3天前及3天后的时间
d = date.today()
delta = timedelta(days=3)
print(d)
print(d+delta) ##3天后的时间
print(d-delta) ##3天前的时间
2019-06-08
2019-06-11
2019-06-05
2.计算2小时前及2小时后的时间
now_hour = datetime.now()
delta = timedelta(hours=2)
print(now_hour)
print(now_hour-delta)
print(now_hour+delta
2019-06-08 20:25:55.665877
2019-06-08 18:25:55.665877
2019-06-08 22:25:55.665877
3.计算2个时间之间的时间差
now_time = datetime.now()
print(now_time)
pwd_time=os.path.getmtime('/etc/passwd') ##此文件内容被修改的时间戳
print(pwd_time)
pwd_time_obj=datetime.fromtimestamp(pwd_time) ##将时间戳转换为字符串时间
print(pwd_time_obj)
delta=now_time-pwd_time_obj
print(delta)
2019-06-08 20:30:04.207381
1559768949.0665383
2019-06-06 05:09:09.066538
2 days, 15:20:55.140843
四.习题测试
1.获取当前主机信息, 包含操作系统名, 主机名,内核版本, 硬件架构等
2. 获取开机时间和开机时长;
3. 获取当前登陆用户
import os
import psutil
from datetime import datetime
print('主机信息'.center(50,'*'))
info = os.uname() ##获取操作系统的详细信息
print(
"""
操作系统:%s
主机名称:%s
内核版本:%s
硬件架构:%s
"""%(info.sysname,info.nodename,info.release
,info.machine)
)
print('开机信息'.center(50,'*'))
boot_time = psutil.boot_time() ##获取开机时间--时间戳类型
boot_time_obj = datetime.fromtimestamp(boot_time) ##时间戳类型转换为datetime类型
now_time = datetime.now()
delta_time = datetime.now()
delta_time = now_time - boot_time_obj
print('开机时间:',boot_time_obj)
print('当前时间:',str(now_time).split('.')[0]) ##str是为了将时间对象转换为字符串,实现分离
print('开机时长:',str(delta_time).split('.')[0])
print('当前登陆用户'.center(50,'*'))
info = psutil.users()[0] ##当前系统登录的用户信息[0]
print(info)
print(info.name)
***********************主机信息***********************
操作系统:Linux
主机名称:foundation4.ilt.example.com
内核版本:3.10.0-514.el7.x86_64
硬件架构:x86_64
***********************开机信息***********************
开机时间: 2019-06-08 19:02:15
当前时间: 2019-06-08 20:37:46
开机时长: 1:35:31
**********************当前登陆用户**********************
suser(name='kiosk', terminal=':0', host='localhost', started=1559991808.0, pid=1726)
kiosk