diff --git a/NTPClient.cpp b/NTPClient.cpp index fffe105..b1e6763 100755 --- a/NTPClient.cpp +++ b/NTPClient.cpp @@ -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; diff --git a/NTPClient.h b/NTPClient.h index 20ec43b..76d9e3e 100755 --- a/NTPClient.h +++ b/NTPClient.h @@ -3,11 +3,21 @@ #include "Arduino.h" #include +#include #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 */