本帖最后由 lqian889 于 2024-8-2 22:49 编辑
路由器,有个实体,开机至当前时间路由器运行了多长时间(时间单位:秒),假设,开机运行了3661秒
state: "{{ (3661-28800) | int | timestamp_custom('%j 天 %H 小时 %M 分钟 %S 秒') }}"
输出值: 1天 1小时 1分钟 1秒
多了1天时间,捣鼓了很长时间,未解。是何问题?
------------------ 分割线 1 ------------------
捣鼓了一天,根据查到的资料,timestamp_custom()函数有个布尔值,默认为 true,UTC时间,false 为取当前时区的值
下面为修改后的代码:
state: "{{ (1) | int | timestamp_custom('%j 天 %H 小时 %M 分钟 %S 秒',false) }
输出值: 1天 0小时 0分钟 1秒
state: "{{ (-1) | int | timestamp_custom('%j 天 %H 小时 %M 分钟 %S 秒',false) }}"
输出值: 365天 23小时 59分钟 59秒
state: "{{ (3661) | int | timestamp_custom('%j 天 %H 小时 %M 分钟 %S 秒',false) }}"
输出值: 1天 1小时 1分钟 1秒
还是无法解决多出来1天的问题,感觉这个函数很妖娆,莫名其妙多出来1天时间。
------------------ 分割线 2 ------------------
这是网上抄的作业
- name: "ios_system_uptime"
unique_id: ios_system_uptime # HA中的实体
state: >
{% set uptime = 24*60*60 + 3600 + 120 %}
{% set years = uptime // 31536000 %}
{% set months = (uptime % 31536000) // 2592000 %}
{% set days = (uptime % 2592000) // 86400 %}
{% set hours = (uptime % 86400) // 3600 %}
{% set minutes = (uptime % 3600) // 60 %}
{{ '%dy ' % years if years else '' }}{{ '%dm ' % months if months else '' }}{{ '%d天 ' % days if days else '' }}{{ '%d小时 ' % hours if hours else '' }}{{ '%d分钟' % minutes if minutes else '' }}
输出值:1天 1小时 2分钟
完美!!!
------------------ 分割线 3 ------------------
感谢6楼的网友提供的代码:
{{timedelta(seconds = 366100)}}
输出值:4 days, 5:41:40
|