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云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Java实现为PDF设置背景色和背景图片

《Java实现为PDF设置背景色和背景图片》在日常的文档处理中,PDF格式因其稳定性和跨平台兼容性而广受欢迎,本文将深入探讨如何利用Spire.PDFforJava库,以简洁高效的方式为你的PDF文档... 目录库介绍与安装步骤Java 给 PDF 设置背景颜色Java 给 PDF 设置背景图片总结在日常的

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

java时区时间转为UTC的代码示例和详细解释

《java时区时间转为UTC的代码示例和详细解释》作为一名经验丰富的开发者,我经常被问到如何将Java中的时间转换为UTC时间,:本文主要介绍java时区时间转为UTC的代码示例和详细解释,文中通... 目录前言步骤一:导入必要的Java包步骤二:获取指定时区的时间步骤三:将指定时区的时间转换为UTC时间步

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

Java利用Spire.XLS for Java设置Excel表格边框

《Java利用Spire.XLSforJava设置Excel表格边框》在日常的业务报表和数据处理中,Excel表格的美观性和可读性至关重要,本文将深入探讨如何利用Spire.XLSforJava库... 目录Spire.XLS for Java 简介与安装Maven 依赖配置手动安装 JAR 包核心API介

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详