python——时间模块(time模块,datetime模块)

常用的时间模块

atime:访问时间(access time),指的是文件最后被读取的时间,可以使用touch命令更改为当前时间;
ctime:变更时间(change time),指的是文件本身最后被变更的时间,变更动作可以使chmod、chgrp、mv等等;
mtime:修改时间(modify time),指的是文件内容最后被修改的时间,修改动作可以使echo重定向等等;

stat 文件名称 #查看文件的时间戳

touch 文件名称 #同时修改文件的三个时间戳

[root@localhost Desktop]# stat luck 
  File: ‘luck’
  Size: 0          Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d Inode: 18690784    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2019-06-09 00:56:31.796064017 +0800
Modify: 2019-06-09 00:56:31.796064017 +0800
Change: 2019-06-09 00:56:31.796064017 +0800
 Birth: -
[root@localhost Desktop]# touch luck      使用touch更改时间戳
[root@localhost Desktop]# stat luck   
  File: ‘luck’
  Size: 0          Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d Inode: 18690784    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2019-06-09 00:57:21.177064849 +0800         
Modify: 2019-06-09 00:57:21.177064849 +0800                三个时间戳全部更改
Change: 2019-06-09 00:57:21.177064849 +0800         
 Birth: -
[root@localhost Desktop]# cat luck            查看文件
[root@localhost Desktop]# stat luck 
  File: ‘luck’
  Size: 0          Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d Inode: 18690784    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2019-06-09 00:57:57.349065458 +0800           atime时间戳更改
Modify: 2019-06-09 00:57:21.177064849 +0800
Change: 2019-06-09 00:57:21.177064849 +0800
 Birth: -
[root@localhost Desktop]# chmod 777 luck              更改文件权限
[root@localhost Desktop]# stat luck 
  File: ‘luck’
  Size: 0          Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d Inode: 18690784    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2019-06-09 00:57:57.349065458 +0800
Modify: 2019-06-09 00:57:21.177064849 +0800
Change: 2019-06-09 00:58:27.947065974 +0800             ctime时间更改
 Birth: -
[root@localhost Desktop]# vim luck           更改文件内容
[root@localhost Desktop]# stat luck 
  File: ‘luck’
  Size: 9          Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d Inode: 18690784    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2019-06-09 00:58:58.063066481 +0800
Modify: 2019-06-09 00:59:02.477066556 +0800            mtime时间更改
Change: 2019-06-09 00:59:02.478066556 +0800		ctime时间更改
 Birth: -

import os #必须先导入os模块
os.path.getatime(’/mnt/bbo’) # 获取文件的atime
os.path.getmtime(’/mnt/bbo’) # 获取文件的mtile
os.path.getctime(’/mnt/bbo’) #获取文件的ctime

import os
ctime =os.path.getctime('/mnt/bbo')
atime = os.path.getatime('/mnt/bbo')
mtime = os.path.getmtime('/mnt/bbo')
print(ctime)
print(atime)
print(mtime)

1560014243.3380852
1560014243.3380852
1560014243.3380852      输出的都是时间戳类型

时间模块

时间表示的几种类型
1,时间戳
2,字符串时间
3,元组时间

import os
import time
print(time.time())
print(time.ctime())
print(time.localtime())

1560014616.375011        时间戳
Sun Jun  9 01:23:36 2019	字符串时间
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=9, tm_hour=1, tm_min=23, tm_sec=36, tm_wday=6, tm_yday=160, tm_isdst=0)     元组时间

时间戳:

时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示,时间戳单位最适于做日期运算

元组时间:
用一个元组装起来的9组数字处理时间:

python——时间模块(time模块,datetime模块)_第1张图片
可以通过属性关键字得到其所对应的具体的时间信息:

info = time.localtime() # 用一个变量接收元组时间
info.tm_year # 返回年份
info.tm_mon # 返回月份
元组时间的九个属性都可以分别输出。

常用的时间转换

把元组的时间转换为时间戳

import time
import os
tuple_time =time.localtime()
# print(tuple_time)       此处打印出的的是元组时间。
print(time.mktime(tuple_time))        改为时间戳

1560015355.0

把元组时间转换成字符串时间

import time
import os
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))         和%m-%d的效果是一样的

06-09
2019-06-09
01:41:28
2019-06-09

将时间戳类型转换成为字符串时间

import time
import os
ptime =os.path.getctime('/etc/passwd')
print(ptime)       打印出时间戳类型
print(time.ctime(ptime))

1559388258.6890132
Sat Jun  1 19:24:18 2019

将时间戳转换为元组

import time
import os
tuple_time = time.localtime()
pwd_time = os.path.getctime('/etc/passwd')
print(time.localtime(pwd_time))

实验效果
time.struct_time(tm_year=2019, tm_mon=5, tm_mday=11, tm_hour=16, tm_min=50, tm_sec=1, tm_wday=5, tm_yday=131, tm_isdst=0)

将元组类型转换为时间戳

import time
import os
tuple_time = time.localtime()
print(time.mktime(tuple_time))

1560395910.0

格式化日期:把元组时间转换成字符串时间
使用 time 模块的 strftime 方法来格式化日期:可以按照想要的格式对日期进行格式化,只需要组合相应的格式化符号即可

格式:time.strftime("%Y-%m-%d %H:%M:%S", 元组时间)
#常用的习惯:年月日之间使用-连接。时分秒之间使用:连接。

datetime模块

查看当前的时间,第二个是更具体的时间戳

import os
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta
print(date.today())
print(datetime.now())

2019-06-13
2019-06-13 11:24:53.114813

计算三天前的时间和三天后的时间

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)
print(d + delta)
print(d - delta)

2019-06-16
2019-06-10

计算两个小时前的时间和两个时间后的时间

import os
from datetime import date
from datetime import time
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-06-13 13:26:48.157090
2019-06-13 09:26:48.157090

返回两个时间,计算两个时间之间的时间差

import os
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta
now_time = datetime.now()
pdd_time = os.path.getmtime('/etc/passwd')
print(pdd_time)
pdd_time_war = datetime.fromtimestamp(pdd_time)
print(pdd_time_war)
delta = now_time - pdd_time_war
print(delta)


1557564601.2830243
2019-05-11 16:50:01.283024
32 days, 18:37:23.484431
应用案例_系统监控

需求:

  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()#返回一个时间戳
# 将时间戳转化为datetime类型的时间
boot_time_bbj =datetime.fromtimestamp(boot_time)
now_time =datetime.now()
delta_time=datetime.now()
delta_time=now_time -boot_time_bbj
print('开机时间:',boot_time_bbj)
# str是为了将时间对象转换为字符串,实现分离
print('当前时间:',str(now_time).split('.')[0])
print('开机时长:',str(delta_time).split('.')[0])
print('当前登陆用户'.center(50,'*'))
login_user = psutil.users()
print(login_user)

你可能感兴趣的:(python——时间模块(time模块,datetime模块))