|  |  | 
 | 
| 
 | 
| 
     ESP32 NTP Client Ref 
    #include <WiFI.h>
     #include <NTPClient.h.>
     #include <WiFiUdp.h>
    
 | 
/*F********************************************************************
*
**********************************************************************/
#include "Arduino.h"
#include <Udp.h>
#define SEVENZYYEARS 2208988800UL
#define NTP_PACKET_SIZE 48
#define NTP_DEFAULT_LOCAL_PORT 1337
class NTPClient {
  private:
    UDP*          _udp;
    bool          _udpSetup       = false;
    const char*   _poolServerName = "pool.ntp.org"; // Default time server
    IPAddress     _poolServerIP;
    unsigned int  _port           = NTP_DEFAULT_LOCAL_PORT;
    long          _timeOffset     = 0;
    unsigned long _updateInterval = 60000;  // In ms
    unsigned long _currentEpoc    = 0;      // In s
    unsigned long _lastUpdate     = 0;      // In ms
    byte          _packetBuffer[NTP_PACKET_SIZE];
    void          sendNTPPacket();
  public:
    NTPClient(UDP& udp);
    NTPClient(UDP& udp, long timeOffset);
    NTPClient(UDP& udp, const char* poolServerName);
    NTPClient(UDP& udp, const char* poolServerName, long timeOffset);
    NTPClient(UDP& udp, const char* poolServerName, long timeOffset, unsigned long updateInterval);
    NTPClient(UDP& udp, IPAddress poolServerIP);
    NTPClient(UDP& udp, IPAddress poolServerIP, long timeOffset);
    NTPClient(UDP& udp, IPAddress poolServerIP, long timeOffset, unsigned long updateInterval);
void setPoolServerName( const char *poolServerName );
     Set time server name @param poolServerName
/*F********************************************************************
*
**********************************************************************/
void 
setRandomPort( unsigned int minValue = 49152, unsigned int maxValue = 65535);
     Set random local port
/*F********************************************************************
*
**********************************************************************/
void 
begin();
     Starts underlying UDP client with default local port
void 
begin( unsigned int port );
     Starts underlying UDP client with specified local port
/*F********************************************************************
*
**********************************************************************/
bool 
update();
    This should be called in main loop of your application. By default an
    update from NTP Server is only made every 60 seconds. This can be 
	configured in NTPClient constructor.
    @return true on success, false on failure
/*F********************************************************************
*
**********************************************************************/
bool 
forceUpdate();
     This will force update from NTP Server.
     @return true on success, false on failure
/*F********************************************************************
*
**********************************************************************/
bool 
isTimeSet() const;
     This allows to check if NTPClient successfully received a NTP packet
     and set time.
     @return true if time has been set, else false
    int getDay() const;
    int getHours() const;
    int getMinutes() const;
    int getSeconds() const;
void 
setTimeOffset( int timeOffset);
     Changes time offset (in seconds). Useful for changing timezones dynamically
/*F********************************************************************
*
**********************************************************************/
void 
setUpdateInterval( unsigned long updateInterval);
     Set update interval to another frequency. E.g. useful when the
     timeOffset should not be set in constructor
     
/*F********************************************************************
*
**********************************************************************/
String 
getFormattedTime() const;
     @return time formatted like `hh:mm:ss`
/*F********************************************************************
*
**********************************************************************/
unsigned long 
getEpochTime() const;
     @return time in seconds since Jan. 1, 1970
/*F********************************************************************
*
**********************************************************************/
void 
end();
     Stops underlying UDP client
    
Example 1
/*H*****************************************************
Rui Santos
Complete project details at https://randomnerdtutorials.com
Based on NTP Client library example
******************************************************/
#include <WiFi.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
//************************* DEFINES ************************************
#define  BAUD  9600
const char  *Ssid   = "SSID";
const char  *Pwd    = "PASSWORD";
//************************* PROTOTYPES ************************************
//************************* VARIABLES ************************************
WiFiUDP NtpUdp;
NTPClient TimCLt(  NtpUdp );
String FmttdDat;
String DayStmp;
String TimStmp;
/*F********************************************************************
*
**********************************************************************/
void 
setup( ) 
{
    Serial.begin(  BAUD );                      // INITIALIZE SERIAL MONITOR
    Serial.print(  "Connecting to " );
    Serial.println(  Ssid );
    WiFi.begin(  Ssid, Pwd );
    while(  WiFi.status( ) != WL_CONNECTED ) 
    {
        delay(  500 );
        Serial.print(  "." );
    }
    Serial.println( "" );
    Serial.println( "WiFi connected." );
    Serial.println( "IP address: " );              // PRINT LOCAL IP ADDRESS
    Serial.println( WiFi.localIP() );
    TimCLt.begin();                    // INITIALIZE A NTPClient TO GET TIME
      // SET OFFSET TIME IN SECONDS TO ADJUST FOR YOUR TIMEZONE, FOR EXAMPLE
    // GMT +1 = 3600
    // GMT +8 = 28800
    // GMT -1 = -3600
    // GMT 0 = 0
    TimCLt.setTimeOffset( -6*3600 );                  // US CENTRAL STD TIME 
}
/*F********************************************************************
*
**********************************************************************/
void 
loop() 
{
    while(  !TimCLt.update() ) 
        TimCLt.forceUpdate();
     // FmttdDat FORMAT: 2018-05-28T16:00:13Z, NEED TO EXTRACT DATE AND TIME
    FmttdDat = TimCLt.getFormattedDate();
    Serial.println( FmttdDat );
    int splitT = FmttdDat.indexOf( "T" );
    DayStmp = FmttdDat.substring( 0, splitT );               // EXTRACT DATE
    Serial.print( "DATE: " );
    Serial.println( DayStmp );
    // Extract time
    TimStmp = FmttdDat.substring( splitT+1, FmttdDat.length() -1);
    Serial.print( "HOUR: " );
    Serial.println( TimStmp );
    delay( 1000 );
}
Example 2
/*F********************************************************************
*
**********************************************************************/
#include <NTPClient.h>
#include <WiFi.h>                                   // FOR WiFi SHIELD
#include <WiFiUdp.h>
//************************* DEFINES ************************************
#define  BAUD  9600
const char *Ssid     = "";
const char *Pwd      = "";
//************************* PROTOTYPES ************************************
//************************* VARIABLES ************************************
WiFiUDP NtpUDP;
// By default 'pool.ntp.org' is used with 60 seconds update interval and no offset
NTPClient TimClt( NtpUDP );
// You can specify time server pool and offset, (in seconds)
// additionally you can specify update interval (in milliseconds).
// NTPClient TimClt(NtpUdp, "europe.pool.ntp.org", 3600, 60000);
/*F********************************************************************
*
**********************************************************************/
void 
setup()
{
    Serial.begin( BAUD );
    WiFi.begin( Ssid, Pwd );
    while( WiFi.status() != WL_CONNECTED ) 
    {
        delay( 500 );
        Serial.print ( "." );
    }
    TimClt.begin();
}
/*F********************************************************************
*
**********************************************************************/
void 
loop() 
{
    TimClt.update();
    Serial.println( TimClt.getFormattedTime() );
    delay( 1000 );
}