常用模块之(time/datetime)

【 一 】时间模块(time/datetime)

【 二 】 表示时间的三种方式

  • *时间戳(Timestamp)是指1970年1月1日00:00:00开始计算的偏移量。可以使用time模块中的time()函数获取当前时间的时间戳,也可以使用datetime模块中的timestamp()方法将日期时间对象换转为时间戳。**

    import time
    import datetime
    ​
    #获取当前时间的时间戳
    time = time.localtime()
    print('当前的时间元组为: ',time)
    ​
    ## 将日期时间对象转换为时间戳
    dt = datetime.datetime(2023,12,17,14,46,0)
    time2 = dt.time()
    print('时间元组为',time2)
    ​
    #当前的时间元组为:  time.struct_time(tm_year=2023, tm_mon=12, tm_mday=17, tm_hour=14, tm_min=46, tm_sec=27, tm_wday=6, tm_yday=351, tm_isdst=0)
    # 时间元组为 14:46:00
    ​
  • 时间元组(Tuple) : 是指包含了年、月、日、时、分、秒、周几、一年中第几天等信息的元组。可以使用time模块中的struct_time类来表示时间元组,也可以使用datetime模块中的timetuple()方法将日期对象转换为时间元组。

    #获取当前时间元组
    timetuple1 = time.localtime()
    print('当前时间元组为: ',timetuple1)
    ​
    #将日期时间对象转换为时间元组
    dt = datetime.datetime(2023,12,17,14,59)
    timetuple2 = dt.timetuple()
    print("2023年12月17日14:59:00时间元组为: ",timetuple2)
    ​
    # 当前时间元组为:  time.struct_time(tm_year=2023, tm_mon=12, tm_mday=17, tm_hour=15, tm_min=0, tm_sec=53, tm_wday=6, tm_yday=351, tm_isdst=0)
    # 2023年12月17日14:59:00时间元组为:  time.struct_time(tm_year=2023, tm_mon=12, tm_mday=17, tm_hour=14, tm_min=59, tm_sec=0, tm_wday=6, tm_yday=351, tm_isdst=-1)
    ​
  • 日期时间对象(Datetime):指包含了年、月、时、分、秒等信息对象。可以使用datetime模块中的datetime类来表示日期时间对象,也可以使用time模块中的getime()、localtime()方法将时间戳转换为日期时间对象。

    # 获取当前时间的日期时间对象
    dt = datetime.datetime.now()
    print("当前日期时间为:",dt)
    ​
    # 将时间戳转换为日期时间对象
    timmstamp = time.time()
    dt2 = datetime.datetime.fromtimestamp(timmstamp)
    ​
    print('时间戳',timmstamp,'对应的日期时间为:',dt2)
    # 当前日期时间为: 2023-12-17 15:07:46.678838
    # 时间戳 1702796866.6788387 对应的日期时间为: 2023-12-17 15:07:46.678839
    ​

    常用模块之(time/datetime)_第1张图片

【 三 】time

1.time

这样就可以实现一个查看当前时间戳

import time
print(time.time())
#1702797281.6670616

2.localtime:查看当前时间的时间(以元组的形式)

如果我们不加参数,默认是当前时间的时间戳作为参数

传入的参数是时间戳。默认是当前时间的时间戳
import time
time.localtime()#当前时间
#time.localtime(1702797982.5156393)#指定时间戳
time_tuple = time.struct_time((2023, 12, 17, 15, 21, 1, 5, 351, 0))
print(time_tuple)
#time.struct_time(tm_year=2023, tm_mon=12, tm_mday=17, tm_hour=15, tm_min=21, tm_sec=1, tm_wday=5, tm_yday=351, tm_isdst=0)

下图是每个参数的含义解释:

常用模块之(time/datetime)_第2张图片

3、gmtime:返回当前时间的struct_time形式,UTC时区(0时区) ,可传入时间戳格式时间

传入的参数必须是时间戳。默认是当前时间的时间戳

import time
#默认当前时间戳
第一种
time_tuple1 = time.gmtime()
print(time_tuple1)
#time.struct_time(tm_year=2023, tm_mon=12, tm_mday=17, tm_hour=7, tm_min=38, tm_sec=40, tm_wday=6, tm_yday=351, tm_isdst=0)
第二种
timestamp = time.time()  # 获取当前时间戳
time_tuple2 = time.gmtime(timestamp)
print(time_tuple2)
#time.struct_time(tm_year=2023, tm_mon=12, tm_mday=17, tm_hour=7, tm_min=39, tm_sec=6, tm_wday=6, tm_yday=351, tm_isdst=0)

4、asctime:返回字符串形式的时间,可以传入struct_time形式时间,用来做转化

传入的参数是时间元组形式;结果是字符串形式

(1)默认情况使用:

print(time.asctime())
#Sun Dec 17 15:40:35 2023

(2)通过time.localtime()得到一个时间元组形式:

date = time.localtime(1600200200)
print(date)
#time.struct_time(tm_year=2020, tm_mon=9, tm_mday=16, tm_hour=4, tm_min=3, tm_sec=20, tm_wday=2, tm_yday=260, tm_isdst=0)
​
print(time.asctime(date))
#Wed Sep 16 04:03:20 2020

(3)传入当地时间的时间戳形式:

print(time.asctime(time.localtime()))
# Sun Dec 17 15:44:32 2023

(4)通过time.time()得到时间戳,再将结果传给time.localtime(),得到时间元组,最后将元组再传给time.asctime():

print(time.asctime(time.localtime(time.time())))
# Sun Dec 17 15:45:26 2023

5、ctime:返回字符串形式的时间,可以传入时间戳格式时间,用来做转化

传入的参数是时间戳,结果是字符串形式

(1)默认情况

print(time.ctime())
# Sun Dec 17 15:46:39 2023

(2)指定某个时间戳

print(time.time())
print(time.ctime(1702799240.7366652))
# 1702799258.9206767
# Sun Dec 17 15:47:20 2023

(3)传入中间结果的时间戳

time.time()得到的是当前时间的时间戳

print(time.ctime(time.time()))
# Sun Dec 17 15:48:37 2023

6、mktime:时间元组转成时间戳形式,必须带上时间元组作为参数

传入参数是时间元组形式,返回的结果是时间戳

print(time.mktime())
# Traceback (most recent call last):
#   File "C:\Users\小白\PycharmProjects\pythonProject2\3\时间模块.py", line 88, in 
#     print(time.mktime())
#           ^^^^^^^^^^^^^
# TypeError: time.mktime() takes exactly one argument (0 given)  因为缺少参数()里面必须要传入一个参数

(1)通过time.localtime()得到时间元组,传给time.mktime

date1 = time.localtime()
print(date1)
print(time.mktime(date1))
#time.struct_time(tm_year=2023, tm_mon=12, tm_mday=17, tm_hour=16, tm_min=13, tm_sec=52, tm_wday=6, tm_yday=351, tm_isdst=0)
# 1702800832.0

(2)传入其他事件元组的结果作为参数

print(time.mktime(time.gmtime()))
# 1702772817.0

7、strftime:把一个时间元组格式化为时间字符串。如果未指定,默认将传入time.localtime()。如果元组中任何一个元素越界,将会报错。

传入参数是元组格式的时间,返回结果是时间字符串

(1)默认输出的都是当前时间

data = time.strftime('%y-%m,-%d')
print(data)#23-12,-17
​
print(time.strftime('%y/%m,/%d'))
​
print(time.strftime('%y/%m,/%d %H:%M:%S'))
​
print(time.strftime('%y/%B,/%d %I:%M:%S %p'))
# 23-12,-17
# 23/12,/17
# 23/12,/17 16:59:27
# 23/December,/17 04:59:27 PM

(2)指定某个时间元组

在指定格式的同时,我们还可以传入一个时间元组:

print(time.strftime("%y/%m/%d %H:%M:%S",time.localtime(1702799240.7366652)))
# 23/12/17 15:47:20

下表格是常用的时间格式和含义:

格式 含义 取值范围(样式)
%y 去掉世纪的年份 00-99,如“19”
%Y 完整的年份 如2019
%j 指定日期是一年中的第几天 范围001-366
%m 返回的是月份 范围:01-12
%b 本地简化月份的名称 简写的英文月份
%B 本地完整月份的名称 完整的英文月份
%d 该月的第几日 如,5月1日返回的是“01”
%H 第几小时,24小时制 00-23
%l 第几小时,12小时制 00-12
%M 分钟 00-59
%S 00-59
%U 该年中的第几个星期(周日为一周的起点) 00-53
%W 同上,周一为起点 00-53
%w 一个星期中的第几天 0-6
%Z 时区 在大陆测试返回的是CST
%x 日期 日/月/年
%X 时间 时:分:秒
%c 详细日期时间 日/月/年时:分:秒
%% %字符 '%'字符
%p 上下午 AM or PM

8、strptime:将字符串形式的时间转成时间元组;和strftime相反功能

两个参数:第一个是字符串形式的时间数据,第二个是我们指定的格式

import time
​
time_str = '23/12/17 17:06:17'
time_format = '%y/%m/%d %H:%M:%S'
​
# 将时间字符串解析为时间元组
time_tuple = time.strptime(time_str, time_format)
​
# 将时间元组格式化为指定格式的字符串
formatted_time = time.strftime(time_format, time_tuple)
#23/12/17 17:06:17
​

8大方法总结

time模块的8大方法的输入和输出总结:

方法 输入 输出
time 时间戳
localtime 时间戳 时间元组
gmtime 时间戳 时间元组
asctime 时间元组 字符串
ctime 时间戳 字符串
mktime 时间元组 时间戳
strftime 格式、时间元组(可选) 字符串
strptime 字符串、格式 时间元组

你可能感兴趣的:(python)