• 首页

  • 家有海

  • 编程
    Java 嵌入式 前端 Linux C# 工具

  • VR

  • 编曲混音
    乐理教程 资源

  • 资源

  • SNTU支付

  • 文章归档

  • 关于
S N T U 科 技
S N T U 科 技

慧雨哲

人多不足以依赖,要生存只有靠自己

04月
21
嵌入式

ESP32 Arduino平台如何去同步中国北京时间并判断时间

发表于 2023-04-21 • 字数统计 530 • 被 59 人看爆

ESP32 Arduino平台如何去同步中国北京时间并判断时间

ESP32 Arduino 可以通过连接到中国标准时间服务器来同步中国北京时间,并使用内置的 RTC(Real-Time Clock)模块进行时间判断。下面是一个简单的示例代码,演示如何在 ESP32 Arduino 中同步中国北京时间并做时间判断:

#include <WiFi.h>
#include <NTPClient.h>
#include <WiFiUdp.h>

WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "ntp.ntsc.ac.cn", 8 * 3600, 60000);

void setup() {
  Serial.begin(115200);
  
  // 连接无线网络
  WiFi.begin("SSID", "password");
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi.");
  
  // 同步中国北京时间
  timeClient.begin();
  while(!timeClient.update()) {
    timeClient.forceUpdate();
  }
  Serial.println("Time synced.");
}

void loop() {
  // 获取当前时间
  time_t now = timeClient.getEpochTime();
  struct tm * timeinfo;
  timeinfo = localtime(&now);
  
  // 判断时间是否在特定范围内
  if (timeinfo->tm_hour >= 8 && timeinfo->tm_hour < 18) {
    Serial.println("It's daytime.");
  } else {
    Serial.println("It's nighttime.");
  }
  
  delay(1000);
}

在上面的代码中,我们使用 WiFi 库连接到无线网络,然后使用 NTPClient 库从 ntp.ntsc.ac.cn 服务器同步中国北京时间。需要注意的是,这个服务器与国际标准时间的时差为 8 小时,因此在初始化 NTPClient 对象时,需要将时间偏移量设置为 8 * 3600 秒,即北京时间与协调世界时(UTC)之间的时差。在 loop() 函数中,我们使用 timeClient.getEpochTime() 函数获取当前时间,然后使用 localtime() 函数将时间转换为 tm 结构体,以便进行时间判断。在这个示例中,我们判断当前时间是否在 8 点到 18 点之间,然后输出相应的消息。

需要注意的是,中国标准时间服务器可能会受到网络延迟和时区变化的影响,因此在实际应用中,建议使用多个服务器进行时间同步,并进行时间校准。

分享到:
Java Maven项目打包时候体积小没有将引用的包集成
  • 文章目录
  • 站点概览
慧雨哲

帅气 小阿慧

爱好太多 ,我也不知道最喜欢什么

Github QQ Email Telegram RSS
看爆 Top5
  • 纽斯K7Pro 2代珊瑚灯-光谱设定 2,308次看爆
  • SNTU PRO 微缸 正式发布 2,228次看爆
  • 微缸造浪DIY教程和配件 1,465次看爆
  • SNTU微缸维护工具推荐 841次看爆
  • 积光1201WIFI 光谱设置 776次看爆

站点已萌萌哒运行 00 天 00 小时 00 分 00 秒(●'◡'●)ノ♥

Copyright © 2023 慧雨哲 苏ICP备16049349号-1

由 Halo 强力驱动 · Theme by Sagiri · 站点地图