时间模块笔记

本文介绍了Python的datetime模块,包括时间戳与标准时间的相互转换、datetime属性的使用,如datetime.datetime.now()、datetime.timedelta以及datetime.datetime.strptime()和strftime()。示例展示了如何将字符串日期转换为时间戳,改变日期格式,以及时间戳转换为指定格式的日期,并获取当前时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、datetime时间模块

1.参考地址 https://www.nhooo.com/python/python-datetime.html
2.计算时间

sql语句 标准时间转时间戳UNIX_TIMESTAMP()

sql语句 把时间戳转换为标准时间FROM_UNIXTIME(ctime,’ ')

sql语句 date 把标准时间转成其他格式化 2022-01-04 20:45:23 可以变为2022-01-04

3.常用的datetime属性

1.datetime.datetime.now()

返回当前本地日期时间

2.timedelta表示时间的差值对象
语法:datetime.timedelta(weeks=0,days=0,hours=0,minutes=0,seconds=0,milliseconds=0,microsecons=0)
每个参数可正,可负也可0,默认是0

3.datetime.datetime.strptime()

字符串转换成datetime类型

4.datetime.datetime.strftime()

datetime转换成字符串类型

2.1 str类型的日期转换为时间戳

复制代码
 1 # 字符类型的时间
 2 tss1 = '2013-10-10 23:40:00'
 3 # 转为时间数组
 4 timeArray = time.strptime(tss1, "%Y-%m-%d %H:%M:%S")
 5 print timeArray     
 6 # timeArray可以调用tm_year等
 7 print timeArray.tm_year   # 2013
 8 # 转为时间戳
 9 timeStamp = int(time.mktime(timeArray))
10 print timeStamp  # 1381419600
11 
12 
13 # 结果如下
14 time.struct_time(tm_year=2013, tm_mon=10, tm_mday=10, tm_hour=23, tm_min=40, tm_sec=0, tm_wday=3, tm_yday=283, tm_isdst=-1)
15 2013
16 1381419600
复制代码
2.2 更改str类型日期的显示格式

复制代码
 1 tss2 = "2013-10-10 23:40:00"
 2 # 转为数组
 3 timeArray = time.strptime(tss2, "%Y-%m-%d %H:%M:%S")
 4 # 转为其它显示格式
 5 otherStyleTime = time.strftime("%Y/%m/%d %H:%M:%S", timeArray)
 6 print otherStyleTime  # 2013/10/10 23:40:00
 7 
 8 tss3 = "2013/10/10 23:40:00"
 9 timeArray = time.strptime(tss3, "%Y/%m/%d %H:%M:%S")
10 otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
11 print otherStyleTime  # 2013-10-10 23:40:00
复制代码
2.3 时间戳转换为指定格式的日期

复制代码
 1 # 使用time
 2 timeStamp = 1381419600
 3 timeArray = time.localtime(timeStamp)
 4 otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
 5 print(otherStyleTime)   # 2013--10--10 23:40:00
 6 # 使用datetime
 7 timeStamp = 1381419600
 8 dateArray = datetime.datetime.fromtimestamp(timeStamp)
 9 otherStyleTime = dateArray.strftime("%Y--%m--%d %H:%M:%S")
10 print(otherStyleTime)   # 2013--10--10 23:40:00
11 # 使用datetime,指定utc时间,相差8小时
12 timeStamp = 1381419600
13 dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
14 otherStyleTime = dateArray.strftime("%Y--%m--%d %H:%M:%S")
15 print(otherStyleTime)   # 2013--10--10 15:40:00
复制代码
2.4 获取当前时间并且用指定格式显示

复制代码
 1 # time获取当前时间戳
 2 now = int(time.time())     # 1533952277
 3 timeArray = time.localtime(now)
 4 print timeArray
 5 otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
 6 print otherStyleTime    
 7 
 8 # 结果如下
 9 time.struct_time(tm_year=2018, tm_mon=8, tm_mday=11, tm_hour=9, tm_min=51, tm_sec=17, tm_wday=5, tm_yday=223, tm_isdst=0)
10 2018--08--11 09:51:17
11 
12 
13 # datetime获取当前时间,数组格式
14 now = datetime.datetime.now()
15 print now
16 otherStyleTime = now.strftime("%Y--%m--%d %H:%M:%S")
17 print otherStyleTime  
18 
19 # 结果如下:
20 2018-08-11 09:51:17.362986
21 2018--08--11 09:51:17 

### 超声波模块的技术笔记开发应用 #### 一、超声波模块的工作原理 超声波模块的核心工作原理基于声波在介质中的传播特性。具体而言,它通过发射一个高频声波信号,并等待该信号被目标物反射后的回波返回。根据发送和接收信号之间的时间差 \( t \),结合声音在空气中的传播速度 \( v \approx 340\, m/s \),可以计算出目标的距离: \[ d = \frac{v \cdot t}{2} \] 其中,\( d \) 表示距离,单位为米;\( t \) 是往返时间,单位为秒[^3]。 --- #### 二、硬件连接与初始化 对于常见的微控制器平台(如 Arduino 或 STM32),超声波模块通常需要两个引脚分别用于触发信号 (TRIG) 和回响信号 (ECHO) 的传输。例如,在 STM32 中可以通过如下方式配置 GPIO 引脚并与模块相连: - **TRIG**: 设置为输出模式,用于向模块发出触发脉冲。 - **ECHO**: 配置为输入捕获模式,捕捉模块返回的高电平持续时间。 以下是一个典型的硬件连接实例: | 功能 | 模块引脚 | 微控制器引脚 | |------|----------|--------------| | VCC | 5V | 电源正极 | | GND | GND | 地线 | | TRIG | TRIG | PA2 | | ECHO | ECHO | PA3 | 完成上述连接后,需对相关外设进行初始化设置[^2]。 --- #### 三、软件设计思路 ##### 1. 触发信号生成 为了激活超声波模块,需要在其 TRIG 引脚上施加至少 10μs 的高电平脉冲。这可通过简单的延时函数实现: ```c GPIO_SetBits(GPIOA, GPIO_Pin_2); // 将 TRIG 设为 HIGH delay_us(10); // 维持 10 μs GPIO_ResetBits(GPIOA, GPIO_Pin_2); // 返回 LOW ``` ##### 2. 回响信号处理 当模块检测到障碍物时,会在 ECHO 引脚输出一段与其对应的实际距离成比例的高电平信号。因此,程序的主要任务是对这段高电平持续时间进行精确测量。STM32 提供了 TIM 定时器的功能支持此操作: ```c // 初始化定时器以捕获 ECHO 上升沿/下降沿事件 TIM_TimeBaseInitTypeDef TIM_InitStruct; NVIC_InitTypeDef NVIC_InitStruct; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); TIM_InitStruct.TIM_Period = 0xFFFF; // 自动重装载值 TIM_InitStruct.TIM_Prescaler = 72 - 1; // 假设系统时钟为 72MHz,则分频系数为 72 TIM_InitStruct.TIM_ClockDivision = TIM_CKD_DIV1; TIM_InitStruct.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_InitStruct); ``` 随后启用中断服务例程读取计数值并计算最终结果。 --- #### 四、常见问题及其解决方案 尽管理论清晰明了,但在实际项目实施过程中仍可能遇到各种异常情况。比如某些情况下显示的距离始终为零,此时可尝试以下措施排除潜在隐患[^4]: - 使用调试工具观察 ECHO 引脚状态变化; - 确认连线无误且供电稳定充足; - 更换测试环境减少干扰源影响; - 若以上均无效则考虑更换损坏器件重新验证逻辑正确性。 --- #### 五、创新应用场景探讨 除了传统的测距用途之外,还可以探索更多有趣方向拓展其价值空间。例如文中提到的方法仅依靠十几行简洁代码便能构建起一套基础版语音控制系统作为开关装置驱动 LED 显示或其他复杂电路运作[^1]。另外配合特定算法还可进一步延伸至手势识别等领域创造无限可能性! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值