Echtes Datum evtl. aus einer Lib für den nächsten Tag anzeigen

Hallo,

der Artikel "Müllkalender" hat mich seinerzeit angeregt, diesen etwas abgewandelt nachzubauen.
Dafür verwende ich seit ca. 2 Jahren einen Wemos D1 mini und ein TFT 3,2" zur Anzeige.
Bisher hat da auch gereicht, nur möchte ich das jetzt optimieren und mir die Termine schon einen Tag vorher anzeigen lassen.
Zusätzlich sollen Symbole für die aktuelle Woche angezeigt werden.

Jetzt mein Problem:
Wie kann ich das Datum, welches ich im Format "08.11.2020" aus der Library erhalte, auch Datumsgetreu mit einem Tag plus (oder minus) anzeigen.
Also ein Tipp, wie ich am 30.11.2020 ein echtes Datum für den nächsten Tag (01.12.2020) heraus bekomme.

Leider habe ich bisher an keiner Stelle der Libraries eine entsprechende Möglichkeit gefunden.

Das manuelle umrechnen wäre natürlich möglich, aber ich vermute, dass es auch einfacher geht.

Habt Ihr Ideen dazu ?

Vielen Dank für eine Unterstützung.

Welche Lib?

Ich würde den Weg über die UNIX-Time gehen, die Sekunden (24 UL * 3600) für 1 Tag addieren und in eine Time-Struktur umwandeln.

Gruß Tommy

Tommy56:
Welche Lib?

Ja, geschaut habe ich in die Time.h-Lib.

Ich würde den Weg über die UNIX-Time gehen, die Sekunden (24 UL * 3600) für 1 Tag addieren und in eine Time-Struktur umwandeln.

Hatte ich auch angedacht. War mir jetzt nicht sicher ob da auch schon die "Sommer/Winterzeit-Anzeige" enthalten ist. Mit der UNIX-Time habe ich bisher noch nicht gearbeitet.

HotSystems:
Ja, geschaut habe ich in die Time.h-Lib.

Du bist doch nicht erst seit heute dabei. Es gibt viele Time.h auch für den ESP8266, also Link bitte.

Die Sommer-/Winterzeitproblematik besteht bei Deiner Aufgabenstellung eigentlich nicht. Du willst ja nur das Datum und nicht die Uhrzeit.

Gruß Tommy

Tommy56:
Du bist doch nicht erst seit heute dabei. Es gibt viele Time.h auch für den ESP8266, also Link bitte.

Die Sommer-/Winterzeitproblematik besteht bei Deiner Aufgabenstellung eigentlich nicht. Du willst ja nur das Datum und nicht die Uhrzeit.

Gruß Tommy

Stimmt natürlich, habe ich grad nicht bedacht.
Den Link der time.h Lib such ich später am PC mal raus und poste die.

Erstmal vielen Dank für deinen Tipp, ich sehe mir das an.

War mir jetzt nicht sicher ob da auch schon die "Sommer/Winterzeit-Anzeige" enthalten ist.

Die Unixtime ist "offiziell" sogar UTC, also keine lokale Zeit und schon gar nicht mit Sommer/Winter Modifikation.
Aber wenn du "30.11.2020" in eine unixZeit wandelst (->1606694400) bleibt dir natürlich freigestellt, was der Eingangstext genau bedeutet. 24 Stunden (86400 Sekunden) mehr ist in derselben Zeitzone immer der Folgetag.

Hallo,
danke für eure Tipps, werde mir das später noch anschauen.
Jetzt ist erst mal Kaffee. :wink:

HotSystems:
Jetzt ist erst mal Kaffee. :wink:

Ich hatte Pflaumenkuchen mit Eierlikörquark, sehr lecker :grin:

HotSystems:
Mit der UNIX-Time habe ich bisher noch nicht gearbeitet.

Das ist einfach die Anzahl der Sekunden seit 1.1.1970.

Wenn Du das aktuelle Datum einschließlich Sommer-/Winterzeit in die Unixzeit wandelst, kannst Du eine Zeitdifferenz, beispielsweise einen Tag in Sekunden, addieren oder subtrahieren. Dann ist das zwar nicht mehr die Anzahl der Sekunden seit 1.1.1970, aber wen stört's. Wenn Du dann die errechnete "falsche" Unixzeit in die normale Anzeige umrechnest, hast Du, was Du haben möchtest.

Wegen des drohenden Überlaufs kannst Du auch die Sekunden seit 1.1.2000 nehmen, das wird teilweise in Bibliotheken unterstützt. In RTClib wird das secondstime genannt.

@Tommy
Ich habe mich mit der Time-Library der ESP8266 Core-Version 2.7.4 versucht. Habe da allerdings keinen Ansatzpunkt gefunden.

@noiasca
hat mir jetzt den Tipp gegeben, mit dem ich erfolgreich war.
Mit "now + 86400" komme ich da weiter und kann wahlweise mein entsprechendes Datum nutzen.

Vielen Dank Euch, jetzt geht es weiter mit dem Müll....äh -Kalender. :wink:

agmue:
Ich hatte Pflaumenkuchen mit Eierlikörquark, sehr lecker :grin:

Hört sich auch lecker an, bei uns gab es Apfelkuchen.....ohne Sahne.

Das ist einfach die Anzahl der Sekunden seit 1.1.1970.

Ja, das hatte ich auch noch auf dem Schirm.
Mittlerweile hat der Tipp von noiasca aber zum "Durchbruch" geholfen.
Da werd ich weiter kommen, hoffe ich. :wink:
Zumindest klappt das jetzt mit dem nächsten Tag schon mal.
Und die Uhrzeit ist letztendlich für diese Anzeige tatsächlich wurscht.

HotSystems:
Hört sich auch lecker an, bei uns gab es Apfelkuchen…ohne Sahne.

Nach zwei Wochen Apfelkuchen war die Pflaume oder Zwetschge eine willkommene Abwechslung.

Manche Sahne vertrage ich nicht, daher Quark mit etwas Vanillezucker und Eierlikör vermischt als leckerer Ersatz.

HotSystems:
Ja, das hatte ich auch noch auf dem Schirm.

Ich hoffe Du hast auch den Überlauf der Unixzeit in 18 Jahren auf selbigem.

HotSystems:
Und die Uhrzeit ist letztendlich für diese Anzeige tatsächlich wurscht.

Ganz pingelige Zeitgenossen könnten um Mitternacht die um eine Stunde zu frühe oder zu späte Anzeige bemängeln, aber wer schaut um diese späte Stunde schon auf den Müllwecker ::slight_smile:

Ob in 18 Jahren unsere Bauten noch werkeln?
Ich denke, für die kleinen MC wird dann evtl. die UNIXTIME neu definiert werden.
Die großen sind dann sowieso 64 Bit. Evtl. müssen auch die Kleinen da durch.
Wobei man ja den unteren Teil (32 Bit) ja trotzdem noch als Sekunden seit xxx auswerten kann.

Gruß Tommy

agmue:
Nach zwei Wochen Apfelkuchen war die Pflaume oder Zwetschge eine willkommene Abwechslung.

Den gabs zwischendurch auch schon. :wink:

Ich hoffe Du hast auch den Überlauf der Unixzeit in 18 Jahren auf selbigem.
Ganz pingelige Zeitgenossen könnten um Mitternacht die um eine Stunde zu frühe oder zu späte Anzeige bemängeln, aber wer schaut um diese späte Stunde schon auf den Müllwecker ::slight_smile:

Naja, bis dahin. Schaun mir ma.
Und wegen der Zeit habe ich ja die Anzeige dann für "Morgen", wenn morgen ist steht da "Heute".
Wer dann noch nicht klar kommt, schaut auf den Papierkalender.

P.S.
Die Anzeige läuft auch schon im Testsystem. Jetzt kommen noch die Symbole dran.
Da kommt dann immer das richtige farbige Symbol unter den Tag gepappt.

HotSystems:
Schaun mir ma.

Der von mir verspeiste Quark hat ein Verfallsdatum, Deine Software jetzt also auch.

Als kreativer Mensch wirst Du bis dahin eh noch viele Versionen erstellen, bis Deine Nachfahren das als überflüssigen Kram zum Recycling geben. Das Wort "Müll" ist dann vermutlich längst in Ungnade gefallen.

Ich vergesse gerne Papier und Baumschnitt, möglicherweise greife ich die Idee auf.

agmue:
Der von mir verspeiste Quark hat ein Verfallsdatum, Deine Software jetzt also auch.

Als kreativer Mensch wirst Du bis dahin eh noch viele Versionen erstellen, bis Deine Nachfahren das als überflüssigen Kram zum Recycling geben. Das Wort "Müll" ist dann vermutlich längst in Ungnade gefallen.

Ich vergesse gerne Papier und Baumschnitt, möglicherweise greife ich die Idee auf.

Ich erneuere gerne meine Projekte. Daher kommt keine Langeweile auf. :wink:

Und wenn fertig, kommt es in die "geilen Projekte".

HotSystems:
@Tommy
Ich habe mich mit der Time-Library der ESP8266 Core-Version 2.7.4 versucht. Habe da allerdings keinen Ansatzpunkt gefunden.

@noiasca
hat mir jetzt den Tipp gegeben, mit dem ich erfolgreich war.
Mit "now + 86400" komme ich da weiter und kann wahlweise mein entsprechendes Datum nutzen.

Vielen Euch, jetzt geht es weiter mit dem Müll....äh -Kalender. :wink:

Hallo,

mal ganz abgesehen von dem Pflaumenkuchen :slight_smile: noch mal zur Vorgehensweise eine Frage.
now manipulieren in Etwa so ?

Heinz

now=now + 86400; // einen Tag vorsetzen

// daten für morgen anzeigen

now= now-86400; // wieder zurück auf die richtige Zeit

Rentner:
Hallo,

mal ganz abgesehen von dem Pflaumenkuchen :slight_smile: noch mal zur Vorgehensweise eine Frage.
now manipulieren in Etwa so ?

Heinz

now=now + 86400; // einen Tag vorsetzen

// daten für morgen anzeigen

now= now-86400; // wieder zurück auf die richtige Zeit

Hallo Heinz,

ja, so habe ich es gelöst und es funktioniert auch wie ich es mir vorgestellt habe.

Allerdings für das aktuelle Datum (nicht Zeit) lässt du einfach nur die Rechnung weg und verwendest nur now.

noiasca:
da würde ich mir glatt eine lokale, temporäre Variable tomorrow leisten... ^^

Nee, die braucht es nicht.
Innerhalb der Datumsfunktion sieht es jetzt so aus:

  if (!isToday) {
    now = (now + 86400);
  }
  localtime_r(&now, &tm);

Und genau dann kommt das raus, was ich brauche.