『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 211|回复: 7

[技术探讨] esphome里怎么把当前日期转换为数字?

[复制链接]

146

主题

2266

帖子

6996

积分

元老级技术达人

积分
6996
金钱
4725
HASS币
30
发表于 2024-10-31 12:07:31 | 显示全部楼层 |阅读模式
本帖最后由 bugensui 于 2024-10-31 12:09 编辑

官网文档可以用id(time_sntp).now().strftime("%Y%m%d"),把当天日期转换字符串(如:"20241031",他是字符串,不是数字),strftime只能转成字符型,不是数值(整数型),在esphome烧录代码里,怎么转成数值型(如:20241031,这个才是数字,区别是不带双引号),我要做条件判断,变量里存储日期数字,是不是当天,所以想转成数字,方便处理,有知道的不,官网文档没有搜到
回复

使用道具 举报

46

主题

1654

帖子

6672

积分

论坛元老

Rank: 8Rank: 8

积分
6672
金钱
5008
HASS币
40
发表于 2024-10-31 16:28:26 | 显示全部楼层
【终极版】培正Esphome电量统计,谷峰计算,阶梯电价
https://bbs.hassbian.com/thread-24441-1-1.html
(出处: 『瀚思彼岸』» 智能家居技术论坛)
  int t_now = parse_number<int>(id(time_sntp).now().strftime("%H%M")).value();
https://github.com/jjcszxh/Espho ... ation/tree/mqtt-rtc
折腾精神永存,感恩感谢论坛每一位愿意分享和帮助过我的大佬,论坛有你更精彩
回复

使用道具 举报

46

主题

1654

帖子

6672

积分

论坛元老

Rank: 8Rank: 8

积分
6672
金钱
5008
HASS币
40
发表于 2024-10-31 16:29:46 | 显示全部楼层
多分享自己的方案才是
折腾精神永存,感恩感谢论坛每一位愿意分享和帮助过我的大佬,论坛有你更精彩
回复

使用道具 举报

146

主题

2266

帖子

6996

积分

元老级技术达人

积分
6996
金钱
4725
HASS币
30
 楼主| 发表于 2024-10-31 16:39:13 | 显示全部楼层
本帖最后由 bugensui 于 2024-10-31 16:49 编辑
jjcs 发表于 2024-10-31 16:28
【终极版】培正Esphome电量统计,谷峰计算,阶梯电价
https://bbs.hassbian.com/thread-24441-1-1.html
(出处 ...

谢谢。我前2天就用了您的代码,也认真学习了您的代码,用了这行 parse_number<int>(id(time_sntp).now().strftime("%H%M")).value(),解析出了,出了个意外错误,和当天日期不符,显示的是20241032,真是活见鬼,查询了材料,也没有找到原因,我也是在电表里用的,准备写个自动化本地运行,需要把日期搞成纯数字,方便在if里做判断。

我现在esphome电表部分代码,就是采用您的,都是本地化运行,你的代码我之前都学习了好多遍,我准备想解决1个可能存在的bug,比如,每日0点,每月1日0点,或者每年1月1日零点,万一这段时间刚好停电了,。那可能自动化就停了。来电后,相关的部分就不准了。准备在执行自动化后,把当前的年月日,年月,年,存在变量里,每59秒那个自动化里,在对比当前的记录时间节点,是否正确,如果不准确,就可能证明自动化没有运行,可以在59秒的时候运行一次,然后保存节点
id(global_date) =parse_number<int>(id(time_sntp).now().strftime("%Y%m%d")).value();


QQ20241031-163813.png


回复

使用道具 举报

46

主题

1654

帖子

6672

积分

论坛元老

Rank: 8Rank: 8

积分
6672
金钱
5008
HASS币
40
发表于 2024-10-31 17:15:00 | 显示全部楼层
bugensui 发表于 2024-10-31 16:39
谢谢。我前2天就用了您的代码,也认真学习了您的代码,用了这行 parse_number(id(time_sntp).now().strfti ...

完美,我写的那个代码逻辑比较复杂,参考另外一个大佬精简的,日期不对啊,这个我很难判断,我都是用网络时间保存到rtc里面使用,这个才是仪器仪表开发的正确思想,这个其实就是把字符串转成int类型
折腾精神永存,感恩感谢论坛每一位愿意分享和帮助过我的大佬,论坛有你更精彩
回复

使用道具 举报

46

主题

1654

帖子

6672

积分

论坛元老

Rank: 8Rank: 8

积分
6672
金钱
5008
HASS币
40
发表于 2024-10-31 17:17:56 | 显示全部楼层
比如,每日0点,每月1日0点,或者每年1月1日零点,可以这样判断,应该不影响,修复的代码我看看,研究研究
折腾精神永存,感恩感谢论坛每一位愿意分享和帮助过我的大佬,论坛有你更精彩
回复

使用道具 举报

146

主题

2266

帖子

6996

积分

元老级技术达人

积分
6996
金钱
4725
HASS币
30
 楼主| 发表于 2024-10-31 17:19:28 | 显示全部楼层
jjcs 发表于 2024-10-31 17:15
完美,我写的那个代码逻辑比较复杂,参考另外一个大佬精简的,日期不对啊,这个我很难判断,我都是用网络 ...

你写的确实有点复杂,但是我基本上看懂了。我esphome电表是海鲜市场买的,现在都装进电表箱1年了。。搞rtc时钟,没有精力了。凑合着用吧。我也是借鉴了你和论坛其他大佬的电表代码,现在电表完全本地化运行,很稳定。
回复

使用道具 举报

146

主题

2266

帖子

6996

积分

元老级技术达人

积分
6996
金钱
4725
HASS币
30
 楼主| 发表于 2024-10-31 17:22:16 | 显示全部楼层
jjcs 发表于 2024-10-31 17:17
比如,每日0点,每月1日0点,或者每年1月1日零点,可以这样判断,应该不影响,修复的代码我看看,研究研究: ...

大佬,你说我这个可能潜在的bug,算不算个不错的容错bug修复,每年1月1日0点的自动化1年就一次,碰到停电的概率基本上没有,但是每日0点,有365次,还是有可能出现的,但是不修复也能用,没有十全十美的产品,等后期写好了。分享在论坛。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-21 20:19 , Processed in 0.787312 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表