Python(十六)time模块

本文深入探讨Python中时间处理的多种方法,包括时间戳、字符串时间、元组时间的概念及相互转换,通过实例演示如何使用time、datetime模块进行日期时间的计算与格式化。

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

****************************************不负年华,不负己*********************************************

一、相关的时间概念

(1)Python中的时间类型概念

    1.1)时间戳 

import time;  # 
# 引入time模块,计算时间戳
ticks = time.time()
print ("当前时间戳为:", ticks)
当前时间戳为: 1559009590.1390202

特点:以秒为单位的浮点小数

优点:时间戳单位最适于做日期运算

缺陷1970年之前的日期就无法以此表示了,同是太遥远的日期也不行,UNIX和Windows只支持到2038年。

计算方式:相对于1970/01/1 00:00(Linux的元年)为起始,并且跟时区有关,由于中国是在是东八区,实际应该会延时8个小时!

    1.2)字符串的时间 

格式:Fri Jun  7 20:23:26 2018

# 不指定参数表示将当前时间戳转化为字符串的时间
print (time.ctime())

特点类型是字符串

备注:linux中的shell中执行命令 ll在查看文件详细属性的时候会默认显示mtime的字符串时间(用户组之后)!

注意:在shell中如果离当前的年份比较近,不会显示年份,所以会看到如下的形式:Jun  5 19:56

    2.3)元组类型的时间

形如:time.struct_time(tm_year=2019, tm_mon=6, tm_mday=7, tm_hour=20, tm_min=29, tm_sec=51, tm_wday=4, tm_yday=158, tm_isdst=0)
# time模块内提供的time.struct_time-->代表了一个时间对象,包含九个属性

print (type(time.localtime()))

特殊属性的说明:tm_yday表示一年内的第几天,范围是[1~366];tm_isdst表示夏令时[0、1或-1],-1是决定是否为夏令时的旗帜

linux的stat含义

二、常用时间的转换

(1)元组时间的转换

需求1:把元组时间转化为时间戳

print(time.mktime(time.localtime()))

需求2:把元组时间转化为字符串时间(默认格式)

# 默认是当前
print(time.asctime(time.localtime()))

需求3:把元组时间格式化为指定格式的时间字符串

import time
# (1)获取元组对象
tuple_time = time.localtime()
# (2)显示指定格式的日期-->注意:大小写的问题
print(time.strftime('%Y-%m-%d',tuple_time))
# 显示日期的等价方式
print(time.strftime('%F',tuple_time))
# (3)显示指定格式的时间-->Time
print(time.strftime('%H:%M:%S',tuple_time))
# 显示时间的等价方式
print(time.strftime('%T',tuple_time))
# 显示完整的时间
print(time.strftime('%Y-%m-%d %H:%M:%S',tuple_time))

备注:日期格式化符号

(2)时间戳的转化

需求4:将时间戳转化为字符串时间

# (1)获取一个文件的时间戳
pwd_time=os.path.getctime('/etc/group')
# (2)打印一下看看内容
print('文件的时间戳:',pwd_time)
# (3)将时间戳转化为字符串时间
print(time.ctime(pwd_time))

# time.ctime[second] -->将时间秒数转化为字符串时间(不指定默认为当前的时间戳)

需求5:将时间戳转化为元组

# (1)获取一个文件的时间戳
pwd_time=os.path.getctime('/etc/group')
# (2)将时间戳转化为元组
print(time.localtime(pwd_time))

# time.localtime[secs] 将秒数代表的时间转化为当前元组时间(不指定参数默认当前时间戳)

(3)时间字符串类型转化

需求6:将时间字符串转化为元组

# (1)定制时间字符串
time_str='2018年7月17日'
# (2)将指定的时间字符串恢复成元组对象(元组时间)
# 过程:其实是从相当于字符串的分解,然后进行数据封装成为一个元组对象!
print(time.strptime(time_str,'%Y年%m月%d日'))

三、练习

"""
需求
利用time.time()方法,我们可以计算两个时间点
之间的时间间隔,但是有些时候我们想要得到/etc/group
文件的最后a/c/m的时间,对应的年月日这些信息
并保存再文件date.txt文件中
"""
import os
import time

# (1)获取文件的时间戳
time1 = os.path.getctime('/etc/shadow')
# (2)将时间戳转化为元组时间
tuple_time = time.localtime(time1)
# (3)获取元组-->列表的属性
year = tuple_time.tm_year
month = tuple_time.tm_mon
day = tuple_time.tm_mday
# (4)将对应时间信息保存到文件中
with open('date.txt','a') as f:
    f.write('%d %d %d' %(year,month,day))
    f.write('\n')

四、时间的转换思维图

五、其它

Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime、time模块

说明:相比于time模块,datetime模块的接口则更直观、更容易调用(但一般不用)。

datetime模块定义了下面这几个类:

    datetime.date:表示日期的类。常用的属性有year, month, day;
    datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;
    datetime.datetime:表示日期时间。
 """datetime.timedelta:表示时间间隔,即两个时间点之间的长度"""
    datetime.tzinfo:与时区有关的相关信息。

练习1

import os
from datetime import date
# 说明:这个模块的作用
# from datetime import time
# 说明:只导入这个模块中的部分类对象
from datetime import datetime
from datetime import timedelta

# (1)当前的日期-->格式-->等价(datetime.date.today())
print(date.today())
# (2)精确-->日期和时间以及毫秒值
print(datetime.now())

# 需求1:计算三天后的时间和日期
d = date.today()
print(type(d))
delta = timedelta(days=3)
# 三天后
print(d + delta)
# 三天前
print(d - delta)

# 需求2:计算两个小时前的时间和两个小时后的时间
now_hour = datetime.now()
delta = timedelta(hours=2)
print(now_hour - delta)
print(now_hour + delta)

# 需求3:返回两个时间,计算时间之间的时间差
now_time=datetime.now()
print(now_time)
pwd_time=os.path.getmtime('/etc/passwd')
print(pwd_time)
# ge shi hua shijianchuo
pwd_time_obj=datetime.fromtimestamp(pwd_time)
print(pwd_time_obj)
delta=now_time-pwd_time_obj
print(delta)

练习2

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, '*'))
# python de huanjing -->inno python
# 返回一个时间戳(开机)-->秒的数值!
boot_time = psutil.boot_time()
print(boot_time)
# 将时间戳转化为datatime类型的时间
boot_time_obj = datetime.fromtimestamp(boot_time)
# print(type(boot_time_obj))
print(boot_time_obj)
now_time = datetime.now()
# 获取当前时间的时间戳
# print(now_time)
delta_time = now_time - boot_time_obj
# print(delta_time,type(delta_time))

print('开机时间:', boot_time_obj)
# 将字符串转化为分割
print('当前时间:', str(now_time).split('.')[0])
# 后续:像Windows一样统计开机时长!
# 当前表示开机的时间!
print('开机时长:',str(delta_time).split('.')[0])
# 神奇!

# 用户的登陆

print('当前登陆用户'.center(50,'*'))
login_user=psutil.users()
# print(login_user)
print(login_user[0].name)

明确:时间对于Linux运维人员的重要性!

涉及日历的模块

其它参考

时间的一个应用场景:指定的日志时间!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值