ESP32Time 是一个专门为 ESP32 微控制器设计的 Arduino 库,提供了一种简单直观的方式来设置和获取 ESP32 板载实时时钟 (RTC) 的时间。它在 ESP32 开发中扮演着至关重要的角色,尤其是在需要精确时间记录、定时器和时间戳相关应用场景下。
ESP32Time 的优势
• 简化操作: ESP32Time 库提供了简洁的 API 函数,使得操作 ESP32 的 RTC 模块变得异常容易。
• 多功能性: 支持多种时间格式的设置和获取,包括时间戳、时间结构体和自定义格式字符串。
• 时间偏移: 支持设置时间偏移,方便不同时区的应用场景。
• 易于集成: 作为 Arduino 库,ESP32Time 与 Arduino IDE 无缝集成,方便快速上手使用。
核心功能介绍
ESP32Time 库主要提供以下核心功能:
1. 设置时间
•
setTime(30, 24, 15, 17, 1, 2021);
使用年、月、日、时、分、秒参数设置时间,例如上面的代码将时间设置为 2021 年 1 月 17 日 15:24:30。•
setTime(1609459200);
使用 Unix 时间戳设置时间,例如上面的代码将时间设置为 2021 年 1 月 1 日 00:00:00。•
setTimeStruct(time);
使用 time 结构体设置时间,方便与其他时间管理库交互。
2. 获取时间
•
getTime()
: 获取当前时间,以字符串格式 "HH:MM:SS" 返回。•
getDate()
: 获取当前日期,以字符串格式 "Weekday, Month DD YYYY" 返回,默认显示简写星期和月份,可以使用参数true
显示完整星期和月份。•
getDateTime()
: 获取当前日期和时间,以字符串格式 "Weekday, Month DD YYYY HH:MM:SS" 返回,默认显示简写星期和月份,可以使用参数true
显示完整星期和月份。•
getTimeDate()
: 获取当前时间和日期,以字符串格式 "HH:MM:SS Weekday, Month DD YYYY" 返回,默认显示简写星期和月份,可以使用参数true
显示完整星期和月份。•
getMicros()
: 获取当前时间戳,以微秒为单位返回。•
getMillis()
: 获取当前时间戳,以毫秒为单位返回。•
getEpoch()
: 获取当前时间戳,以秒为单位返回,包含时间偏移。•
getLocalEpoch()
: 获取当前时间戳,以秒为单位返回,不包含时间偏移。•
getSecond()
: 获取当前秒数。•
getMinute()
: 获取当前分钟数。•
getHour()
: 获取当前小时数,默认以 12 小时制显示,可以使用参数true
获取 24 小时制。•
getAmPm()
: 获取当前时间是上午还是下午,以字符串格式 "AM" 或 "PM" 返回,可以使用参数true
获取小写格式 "am" 或 "pm"。•
getDay()
: 获取当前月份中的日期。•
getDayofWeek()
: 获取当前星期几,以数字表示 (0 代表星期日,6 代表星期六)。•
getDayofYear()
: 获取当前年份中的日期,以数字表示 (0 代表 1 月 1 日,365 代表 12 月 31 日)。•
getMonth()
: 获取当前月份,以数字表示 (0 代表 1 月,11 代表 12 月)。•
getYear()
: 获取当前年份。•
getTime("%A, %B %d %Y %H:%M:%S")
: 使用自定义格式字符串获取时间,例如上面的代码将以 "Weekday, Month DD YYYY HH:MM:SS" 格式返回当前时间。
3. 时间偏移
ESP32Time 库支持设置时间偏移,方便不同时区的应用。
•
ESP32Time rtc(offset);
创建 ESP32Time 实例时,可以使用参数offset
设置时间偏移,单位为秒。•
rtc.offset;
获取或修改当前时间偏移。
使用示例
以下是一个简单的示例代码,演示了 ESP32Time 库的基本使用方法:
#include <ESP32Time.h>
ESP32Time rtc;
void setup() {
Serial.begin(115200);
// 设置当前时间为 2021 年 1 月 17 日 15:24:30
rtc.setTime(30,24,15,17,1,2021);
// 设置时间偏移为 +8 小时 (东八区)
rtc.offset =8*3600;
}
void loop() {
Serial.print("当前时间:");
Serial.println(rtc.getDateTime(true));
delay(1000);
}
总结
ESP32Time 库提供了一种简单易用的方式来管理 ESP32 的 RTC 模块,它功能强大、使用方便,可以满足各种时间管理需求。无论是需要精确时间记录、定时器还是时间戳相关应用,ESP32Time 库都能够提供可靠的支持。
项目地址:https://github.com/fbiego/ESP32Time