Added two new methods to return Date and Time as a struct and get formatted Date Time string with a given format

This commit is contained in:
isharasampath 2020-03-18 17:30:29 +05:30
parent 894b21de11
commit 68658309b1
2 changed files with 38 additions and 0 deletions

View File

@ -145,6 +145,23 @@ int NTPClient::getSeconds() const {
return (this->getEpochTime() % 60);
}
DateTime NTPClient::getDateTime() const {
struct tm * ts;
time_t rawTime = this->getEpochTime();
ts = localtime(&rawTime);
DateTime dt = {ts->tm_sec, ts->tm_min, ts->tm_hour, ts->tm_mday, (ts->tm_mon + 1), (ts->tm_year + 1900)};
return dt;
}
String NTPClient::formatDateTime(const char* fmt) const {
struct tm * ts;
time_t rawTime = this->getEpochTime();
ts = localtime(&rawTime);
char buf[64];
strftime(buf, sizeof(buf), fmt, ts);
return String(buf);
}
String NTPClient::getFormattedTime() const {
unsigned long rawTime = this->getEpochTime();
unsigned long hours = (rawTime % 86400L) / 3600;

View File

@ -3,11 +3,21 @@
#include "Arduino.h"
#include <Udp.h>
#include <time.h>
#define SEVENZYYEARS 2208988800UL
#define NTP_PACKET_SIZE 48
#define NTP_DEFAULT_LOCAL_PORT 1337
struct DateTime {
int dt_seconds;
int dt_minutes;
int dt_hours;
int dt_date;
int dt_month;
int dt_year;
};
class NTPClient {
private:
UDP* _udp;
@ -74,6 +84,17 @@ class NTPClient {
int getMinutes() const;
int getSeconds() const;
/**
* Get date time as a astuct which contains
* Year, Month, Date, Hours, Minutes, Seconds
*/
DateTime getDateTime() const;
/**
* Format the date time to a string with a given format (Ex: %Y/%m/%d %H:%M:%S)
*/
String formatDateTime(const char* fmt) const;
/**
* Changes the time offset. Useful for changing timezones dynamically
*/