发布时间:2022-08-18 18:38
本来想从开源项目找找灵感的,但是!那些代码真烂!!!!!
开源项目免不了的就是抄抄抄代码,想知道 NTP 是怎么实现的还要读那一堆烂代码,烦!
就算开源项目能怎么样!不还是一样的 烂!代!码!
自己想办法看看 NTP 的相关库是怎么实现的吧。
可以使用 aliyun 的 NTP 服务器。
发现不少开源项目都是用的 aliyun 的 NTP 服务器。
阿里云NTP服务器 - 云服务器 ECS - 阿里云https://help.aliyun.com/document_detail/92704.html
NTP:Network Time Protocol(网络时间协议)
▶️ NTP 是用于同步网络中计算机时间的协议。它的用途是把计算机的时钟同步到世界协调时UTC。
UTC:Universal Time Coordinated(协调世界时)以原子时秒长为基础。
GMT:Universal Time(世界时)以地球自转为基础。
北京时间采用东八区的区时作为标准时间。北京时间比世界时(UTC)早8小时,北京时间=UTC+8。
▶️ 如果使用 NTPClient 库,其实很简单很简单很简单!!
官方例程里就几个函数就实现了!就四个!
WiFiUDP ntpUDP; //创建UDP实例
NTPClient timeClient(ntpUDP, "europe.pool.ntp.org", 60 * 60 * 8, 60000); //NTC
//UDP& udp, const char* poolServerName, long timeOffset, unsigned long updateInterval
//初始化函数
timeClient.begin();
//获取时间
timeClient.update();
timeClient.getFormattedTime();
这样,就能直接获取 小时:分钟:秒 的格式的时间了。
有感而发:学习ESP32还是要学一学网络协议啊!
需要说明的函数:
NTPClient timeClient(ntpUDP, "europe.pool.ntp.org", 60 * 60 * 8, 60000); //NTC
//UDP& udp, const char* poolServerName, long timeOffset, unsigned long updateInterval
ntpUDP:UDP实例
"europe.pool.ntp.org":NTP服务器地址
60 * 60 * 8:是换算为东八区的时间需要的参数:秒*分钟*小时
60000:更新时间