esp-idf手动设置系统时间

2024-06-16 14:48
文章标签 系统 设置 时间 手动 idf esp

本文主要是介绍esp-idf手动设置系统时间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

官方提到使用ntp同步时间,后自动设置了时间。

System Time - ESP32 - — ESP-IDF 编程指南 v4.3.1 文档icon-default.png?t=LA92https://docs.espressif.com/projects/esp-idf/zh_CN/v4.3.1/esp32/api-reference/system/system_time.html使用了函数settimeofday().

To set the current time, you can use the POSIX functions settimeofday() and adjtime()

这里直接手动设置时间,参考arduino第三方库esp32time的写法。

#include <time.h>
#include <sys/time.h>
//houyawei
void setTime(int sc, int mn, int hr, int dy, int mt, int yr) {// seconds, minute, hour, day, month, year $ microseconds(optional)// ie setTime(20, 34, 8, 1, 4, 2021) = 8:34:20 1/4/2021struct tm t = {0};        // Initalize to all 0'st.tm_year = yr - 1900;    // This is year-1900, so 121 = 2021t.tm_mon = mt - 1;t.tm_mday = dy;t.tm_hour = hr;t.tm_min = mn;t.tm_sec = sc;time_t timeSinceEpoch = mktime(&t);//   setTime(timeSinceEpoch, ms);struct timeval now = { .tv_sec = timeSinceEpoch };settimeofday(&now, NULL);
//houyawei
}

调用的时候,直接

setTime(20,34,8,1,4,2021);

读取可以直接按照官方写的例子

time_t now;
char strftime_buf[64];
struct tm timeinfo;time(&now);
// Set timezone to China Standard Time
setenv("TZ", "CST-8", 1);
tzset();localtime_r(&now, &timeinfo);
strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo);
//ESP_LOGI(TAG, "The current date/time in Shanghai is: %s", strftime_buf);
puts(strftime_buf);
//也可以只取出年月日等参数
/×
timeinfo.tm_year
timeinfo.tm_mon  
timeinfo.tm_mday
timeinfo.tm_hour
timeinfo.tm_min
timeinfo.tm_sec
houyawei
×/

参考:

System Time - ESP32 - — ESP-IDF 编程指南 v4.3.1 文档icon-default.png?t=LA92https://docs.espressif.com/projects/esp-idf/zh_CN/v4.3.1/esp32/api-reference/system/system_time.html

ESP32Time/ESP32Time.cpp at main · fbiego/ESP32Time · GitHubicon-default.png?t=LA92https://github.com/fbiego/ESP32Time/blob/main/ESP32Time.cpp How can I set the date / time? - ESP32 ForumEspressif ESP32 Official Forumhttps://www.esp32.com/viewtopic.php?t=6043

这篇关于esp-idf手动设置系统时间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1066735

相关文章

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

如何在Mac上彻底删除Edge账户? 手动卸载Edge浏览器并清理残留文件技巧

《如何在Mac上彻底删除Edge账户?手动卸载Edge浏览器并清理残留文件技巧》Mac上的Edge账户里存了不少网站密码和个人信息,结果同事一不小心打开了,简直尴尬到爆炸,想要卸载edge浏览器并清... 如果你遇到 Microsoft Edge 浏览器运行迟缓、频繁崩溃或网页加载异常等问题,可以尝试多种方

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2