#include <Timezone.h>
#include <WiFi.h>
TimeChangeRule myDST = { "DST", Last, Sun, Mar, 3, 180 }; // Διακινησιακή εξοικονόμηση θερινού χρόνου (DST) - τελευταίη Κυριακή του Μαρτίου, 2:00 AM
TimeChangeRule mySTD = { "STD", Last, Sun, Oct, 3, 120 }; // Τυπική ώρα - τελευταία Κυριακή του Νοεμβρίου, 2:00 AM
Timezone myTZ(myDST, mySTD);
String iso8601 = "2023-11-13T18:08:23.990Z";
void setup() {
Serial.begin(115200);
// Μετατροπή του ISO 8601 string σε τοπική ώρα
struct tm tm;
time_t utcTime;
sscanf(iso8601.c_str(), "%d-%d-%dT%d:%d:%d.%*3sZ", &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec);
tm.tm_year -= 1900; // Το έτος πρέπει να είναι έτος από το 1900
tm.tm_mon -= 1; // Οι μήνες ξεκινούν από 0 (Ιανουάριος = 0)
utcTime = mktime(&tm);
// Μετατροπή της UTC time σε τοπική ώρα με διακινησιακή εξοικονόμηση θερινού χρόνου (DST)
time_t localTime = myTZ.toLocal(utcTime);
// Εκτύπωση της τοπικής ώρας
struct tm* local_tm = localtime(&localTime);
Serial.println(asctime(local_tm));
}
void loop() {
// Ο κώδικάς σας εδώ
}