当前位置: 首页 > news >正文

python中时间函数及其应用

 近段时间,因在改写以前写的学校自动铃声控制系统,又学到了一些新的知识,特记录如下:

一、时间函数基础

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_lieudat = '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_lieut_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 oswb = 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 oswhile 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 


http://www.mrgr.cn/news/44092.html

相关文章:

  • 【隐私计算篇】不经意传输OT及扩展协议OT Extension的进一步探索(涉及OT变体、恶意敌手模型、silent OT、OT扩展的通信对比等)
  • 2024/10/6 数据结构大题打卡
  • LeetCode Hot100 | Day2 | 二叉树:二叉树的中序遍历二叉树的最大深度
  • 菜鸟笔记003 获取目标对象的颜色值
  • 【Kubernetes】常见面试题汇总(五十八)
  • Vue入门-指令学习-v-on
  • 在 Koa 中,中间件函数的参数ctx是什么?
  • [Linux] Linux 初识进程地址空间 (进程地址空间第一弹)
  • 神经网络激活函数列表大全及keras中的激活函数定义
  • 写文献综述的软件哪个好?推荐4款AI自动生成论文优质工具
  • Springboot人才求职招聘系统源码(前台+后台)
  • 计数排序算法
  • 2024 热门的4大电脑剪辑软件大盘点。
  • yolov测试各项指标的流程
  • P3792 由乃与大母神原型和偶像崇拜
  • 向上和向下建堆的时间复杂度
  • 我谈巴特沃斯滤波器
  • 【Spring】“请求“ 之传递 JSON 数据
  • Study-Oracle-11-ORALCE19C-ADG集群搭建
  • MySQL【知识改变命运】03