目录
1、 时间戳 --localtime/gmtime--> 结构化时间 --strftime--> 格式化的字符时间
2、时间戳 <--mktime-- 结构化时间 <--strptime-- 格式化的字符时间
一、Time模块
1、时间戳
注:只有时间戳形式可以加减
print(time.time()) # 适合做时间间隔运算 print(time.time()+24*60*60*7) # 计算7天后的时间
运行结果:
1717725556.3852727
1718344890.697206
2、 格式化字符串
print(time.strftime("%Y-%m-%d %H:%M:%S %A")) print(time.strftime("%Y-%m-%d %X %A")) print(time.strftime("%x %X %A"))
运行结果:
2024-06-07 09:59:16 Friday
2024-06-07 09:59:16 Friday
06/07/24 09:59:16 Friday
附:
python中时间日期格式化符号:
- %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 当前时区的名称
- %% %号本身
3、结构化时间
res = time.localtime() print(res) print(res.tm_year) # 获取年份 print(res.tm_mday) # 获取日期 print(res.tm_wday) # 获取星期的第几天
运行结果:
time.struct_time(tm_year=2024, tm_mon=6, tm_mday=7, tm_hour=9, tm_min=59, tm_sec=16, tm_wday=4, tm_yday=159, tm_isdst=0)
注:tm_wday:表示星期天,以0开始;
tm_yday:表示一年中的第几天;
tm_isdst:表示夏令时,0,非夏令时;
2024
7
4
二、Datatime 模块
1、datetime
res = datetime.datetime.now() print(res) print(res.replace(microsecond=0)) # 微秒
运行结果:
2024-06-07 13:58:50.883023
2024-06-07 13:58:50
2、datatime 做时间加减
res = datetime.datetime.now() res_late = datetime.datetime.now()+ datetime.timedelta(days=7) # 计算7天后的时间 res_before = datetime.datetime.now()+ datetime.timedelta(days=-7) # 计算7天前的时间 print(res_late) print(res_before)
注:减时间的操作,一般用于查询数据时;
运行结果:
2024-06-07 14:06:45.354345
2024-06-14 14:06:45.354345
2024-05-31 14:06:45.354345
附:鼠标箭头放在timedelta上,按住Ctrl +鼠标左键:
上述知:可以加减天数,周,秒,毫秒,分,小时。
三、时间格式转换
1、 时间戳 --localtime/gmtime--> 结构化时间 --strftime--> 格式化的字符时间
(1)时间戳 ----> 结构化时间
res = time.time() print(time.localtime()) print(time.gmtime()) # gmtime()是标准时间 print(time.localtime(res)) print(time.localtime(111)) print(time.gmtime(111))
运行结果:
time.struct_time(tm_year=2024, tm_mon=6, tm_mday=12, tm_hour=10, tm_min=14, tm_sec=1, tm_wday=2, tm_yday=164, tm_isdst=0)
time.struct_time(tm_year=2024, tm_mon=6, tm_mday=12, tm_hour=2, tm_min=14, tm_sec=1, tm_wday=2, tm_yday=164, tm_isdst=0)
time.struct_time(tm_year=2024, tm_mon=6, tm_mday=12, tm_hour=10, tm_min=14, tm_sec=1, tm_wday=2, tm_yday=164, tm_isdst=0)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=1, tm_sec=51, tm_wday=3, tm_yday=1, tm_isdst=0)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=1, tm_sec=51, tm_wday=3, tm_yday=1, tm_isdst=0)
(2) 结构化时间 ----> 格式化的字符时间
res = time.localtime(11111) # 现在的时间 print(time.strftime('%Y-%m-%d %X %A')) # 未传第二个参数,现在时间 print(time.strftime('%Y-%m-%d %X %A', res)) # 传第二个参数,参数表示的时间y
运行结果:
2024-06-12 10:19:25 Wednesday
1970-01-01 11:05:11 Thursday
2、时间戳 <--mktime-- 结构化时间 <--strptime-- 格式化的字符时间
(1)结构化时间 <---- 格式化的字符时间
t = '1949-8-1 08:31:59' print(time.strptime(t, '%Y-%m-%d %X'))
运行结果:
time.struct_time(tm_year=1949, tm_mon=8, tm_mday=1, tm_hour=8, tm_min=31, tm_sec=59, tm_wday=0, tm_yday=213, tm_isdst=-1)
(2)时间戳 <---- 结构化时间
t = '1994-8-1 08:31:59' res = time.strptime(t, '%Y-%m-%d %X') # 结构化时间 print(time.mktime(res)) print(time.mktime(res)+30*24*60*60) # 30天后的时间戳
运行结果:
775701119.0
778293119.0
四、补充
time.sleep(1) # 延时 print(time.asctime()) print(time.ctime(time.time())) # 可以直接把时间戳转成固定的字符串格式,不可以自定义格式 print(datetime.datetime.now()) print(datetime.datetime.utcnow()) # 世界标准时间 print(datetime.datetime.fromtimestamp(11111)) # 不可自定义时间格式,
运行结果:
Wed Jun 12 10:46:26 2024
Wed Jun 12 10:46:26 2024
2024-06-12 10:46:26.200038
2024-06-12 02:46:26.200038
1970-01-01 11:05:11