马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
近段时间,因在改写从前写的学校自动铃声控制体系,又学到了一些新的知识,特记载如下:
一、时间函数根本
1、time模块中的函数及其用法
- time.time(): 返回当前时间的时间戳,即自1970年1月1日以来的秒数。
- time.localtime(): 返回当地时间的布局化表现。如time.struct_time(tm_year=2024, tm_mon=10, tm_mday=6, tm_hour=20, tm_min=12, tm_sec=1, tm_wday=6, tm_yday=280, tm_isdst=0)
- time.gmtime(): 返回UTC时间的布局化表现。如time.struct_time(tm_year=2024, tm_mon=10, tm_mday=6, tm_hour=12, tm_min=12, tm_sec=1, tm_wday=6, tm_yday=280, tm_isdst=0)
- time.sleep(seconds): 使步伐停息指定的秒数。
- time.strftime('%Y-%m-%d %H:%M:%S', t): 将布局化时间对象转换为指定格式的字符串。
- time.strptime(string,'%Y-%m-%d %H:%M:%S'): 将字符串转换为布局化时间对象。
2、datetime模块中的函数及其用法
- datetime.datetime(): 创建日期时间对象。
- datetime.now(): 获取当前日期和时间。
- datetime.fromtimestamp(timestamp): 将时间戳转换为日期时间对象。
- datetime.timedelta(): 表现两个日期或时间之间的差别。
二、时间函数的应用
3、将用字符串情势表现的日期时间格式化
- from datetime import datetime,date,time
- import time
- from chinese_calendar import is_workday, is_holiday, is_in_lieu
- dat = '2021-9-11'
- tim = '9:11:30'
- str_time = dat + ' ' + tim # 用空格分隔日期与时间
- t_strp = datetime.strptime(str_time, '%Y-%m-%d %H:%M:%S') # 字符格式解析为日期时间
- print('当前时间t_strp为', t_strp, type(t_strp))
复制代码 结果为:当前时间t_strp为 2021-09-11 09:11:30 <class 'datetime.datetime'>
4、时间对象转换为指定格式的字符串
- from datetime import datetime,date,time
- import time
- from chinese_calendar import is_workday, is_holiday, is_in_lieu
- t_strf = time.strftime('%Y-%m-%d %H:%M:%S %A', time.localtime()) # 格式化输出
- print('本地时间localtime为:',time.localtime())
- print('本地时间t_strf为', t_strftime, type(t_strftime))
复制代码 运行结果为:当地时间localtime为:time.struct_time(tm_year=2024, tm_mon=10, tm_mday=6, tm_hour=20, tm_min=31, tm_sec=20, tm_wday=6, tm_yday=280, tm_isdst=0)
当地时间为t_strf为 2024-10-06 20:31:20 Sunday <class 'str'>
5、归并日期时间
我们从指令电子表格中分别提取各指令时间,日期则用当前日期,归并成日期时间,再变革成时间戳,就可以和当前时间求时间差,从而判断指令是否该运行了。
须要留意的是,电子表格提取的时间已经是时间格式。- import openpyxl
- import re
- import colorama # 打包后彩色字显示用
- from datetime import datetime, date, time,timedelta
- from chinese_calendar import is_workday, is_holiday # 自动判断中国假期
- import time
- import os
- wb = openpyxl.load_workbook('自动打铃指令.xlsx',data_only=True) # 打开指令文件,如有公式只读数据
- sheet = wb['Sheet1']
- tim = sheet['B' + str(i)].value # 提取指令时间,已是datetime数据类型
- time2 = datetime.combine(date_today, time1) # 合并日期时间,已是datetime数据类型
- t0 = time.time()
- t1 = time2.timestamp()
- differtime = (t1 - t0) # 时间差(秒)
复制代码 6、自动判断中国工作日和沐日
对于学校上课铃声控制,还要思量周末响铃扰民标题,起先思量寻常周从星期列表中判断周六周日不响铃,国家节沐日调休时再重新天生一个新的列表,非常复杂。
不经意间,发现有第三方插件chinese_calendar,能自动判断中国节沐日,太好了。- import openpyxl
- import re
- import colorama # 打包后彩色字显示用
- from datetime import datetime, date, time,timedelta
- from chinese_calendar import is_workday, is_holiday # 自动判断中国假期
- import time
- import os
- while True:
- date_today = date.today() # 重新读取当前时间
- week_list = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
- weekday = date_today.weekday()
- week = week_list[weekday]
- # print('星期:', week_list[weekday])
- print(f'今天是{date_today},{week}')
- work_day = is_workday(date_today) # 能自動判斷中國工作日
- holi_day = is_holiday(date_today) # 能自動判斷中國節假日
- # print('工作日', is_workday(date_today))
- if work_day == True: # 工作日
- print('是国家规定的工作日。')
- ins() # 导入指令包
- run() # 运行主程序
- else:
- date_today = date.today()
-
复制代码 极域电子课堂座位表步伐下载链接:链接:https://pan.baidu.com/s/1X0WUTtXmr1EhFg9CNgoIKA?pwd=odvs
提取码:odvs
考试指令体系下载链接:https://pan.baidu.com/s/11x9fS1gUEPCd6w15KHCxSw?pwd=zvw3
提取码:zvw3
照片插入电子表格步伐链接:https://pan.baidu.com/s/1dvW5q9G53prkUDVcO6uffA?pwd=w3jp
提取码:w3jp
|