python 之时间模块

一、time 模块

1、三个时间显示形式

  • timestamp:时间戳
    •   通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
  • struct_time:结构化时间
    •   struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
  • format_string:格式化时间
    •   格式化的时间字符串(Format String): ‘1999-12-06’

2、时间戳

print(time.time())

1686297616.068288

3、结构化时间

time.struct_time 是 Python 中的一个元组,用于表示时间的各个组成部分,例如年、月、日、时、分、秒等。它常用于与时间相关的操作和函数,如时间的格式化、解析和计算等。

res = time.localtime()
print(res)

# 输出
time.struct_time(tm_year=2023, tm_mon=6, tm_mday=9, tm_hour=16, tm_min=8, tm_sec=20, tm_wday=4, tm_yday=160, tm_isdst=0)

print(res.tm_year, res[0])  # 调用年月日、小时
print(res.tm_mon, res[1])
print(res.tm_mday, res[2])
print(res.tm_hour, res[3])  

4、格式化时间

res = time.strftime('%Y-%m-%d %H:%M:%S')
# res = time.strftime('%Y-%m-%d %X')  # 与上面的等价

print(res)

# 输出
2023-06-09 16:12:19

格式化字符

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

小结:时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的

5、几种格式之间的转换

 时间戳-->结构化时间

#1、time.gmtime(时间戳)    #UTC时间,与英国伦敦当地时间一致

print(time.gmtime(time.time()))

# 输出
time.struct_time(tm_year=2023, tm_mon=6, tm_mday=9, tm_hour=8, tm_min=18, tm_sec=39, tm_wday=4, tm_yday=160, tm_isdst=0)

# 2、time.localtime(时间戳)
print(time.localtime(time.time()))

结构化时间-->时间戳

# time.mktime(结构化时间)
# print(time.time())
time_tuple = time.localtime(1686298960.813175)
print(time.mktime(time_tuple))

# 输出
1686298960.0

结构化时间-->字符串时间

# time.strftime("格式定义","结构化时间")  结构化时间参数若不传,则显示当前时间
res = time.strftime("%Y-%m-%d %X")
print(res)

# 输出
2023-06-09 16:25:37

#  time.strftime 接受参数时,输出转换成第二个参数的时间
res = time.strftime("%Y-%m-%d", time.localtime(1500000000))
print(res)

#输出
2017-07-14

#字符串时间-->结构化时间
#time.strptime(时间字符串,字符串对应格式)
>>>time.strptime("2017-03-16","%Y-%m-%d")
time.struct_time(tm_year=2017, tm_mon=3, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=75, tm_isdst=-1)
>>>time.strptime("07/24/2017","%m/%d/%Y")
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=205, tm_isdst=-1)

结构化时间 --> %a %b %d %H:%M:%S %Y串

# time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串
res = time.asctime(time.localtime(1500000000))
print(res) 

#输出结果
Fri Jul 14 10:40:00 2017


res = time.asctime()

print(res)
# 输出
Fri Jun  9 16:32:37 2023

# 时间戳 --> %a %b %d %H:%M:%S %Y串
# time.ctime(时间戳)  如果不传参数,直接返回当前时间的格式化串
res = time.ctime()
print(res)
# 输出
Fri Jun  9 16:35:45 2023

res = time.ctime(1500000000)
print(res)
# 输出
Fri Jul 14 10:40:00 2017

二、datatime

1、自定义时间

res = datetime.date(2023, 6, 9)
print(res)  # 2023-06-09

2、获取本地时间,年月日

now_date = datetime.date.today()
print(now_date) # 2023-06-09

3、获取本地 年月日时分秒

# now_time = datetime.datetime.today() # 与下面等价
now_time = datetime.datetime.now()
print(now_time)  # 2023-06-09 16:46:55.305812

4、无论是年月日,还是年月日时分秒对象都可以调用以下方法获取针对性的数据

now_time = datetime.datetime.today()

# 以datetime对象举例
print(now_time.year)  # 获取年份2019
print(now_time.month)  # 获取月份7
print(now_time.day)  # 获取日1
print(now_time.weekday())  # 获取星期(weekday星期是0-6) 0表示周一
print(now_time.isoweekday())  # 获取星期(weekday星期是1-7) 1表示周一

5、datetime.timedelta() 方法可以操作时间

如计算7天后的时间

# 获得本地日期 年月日
tday = datetime.date.today()

# 定义操作时间 day=7 也就是可以对另一个时间对象加7天或者减少7点
tdelta = datetime.timedelta(days=7)

# 打印今天的日期
print('今天的日期:{}'.format(tday))  #今天的日期:2023-06-09

# 打印七天后的日期
print('从今天向后推7天:{}'.format(tday + tdelta))  # 从今天向后推7天:2023-06-16

6、小练习 计算举例今年过生日还有多少天

birthday = datetime.date(2023, 12, 6) # 过生日时间
now_date = datetime.date.today() # 今天时间
days = birthday - now_date # 时间差
print('我的生日是:{}'.format(birthday))
print('今天的日期:{}'.format(now_date))
print('距离生日还有{}天'.format(days))

 

 

 

 

 

 

 

 

 

 

 

3

 

posted @ 2023-06-09 16:03  凡人半睁眼  阅读(54)  评论(0编辑  收藏  举报