Differenz zwischen Datum A und Datum B

Dirk

Administrator
Teammitglied
28. Jan. 2007
4.328
166
63
Mittelhessen, Giessen
Sprachen
  1. ANSI C
  2. C++
  3. C#
  4. Java
  5. Kotlin
  6. Pascal
  7. Assembler
  8. PHP
Hallo zusammen,

nun habe ich einmal eine Frage ...

In einer Anwendung berechne ich die Differenz zwischen einem Datum A (aktuelle Zeit) und einem Datum B (Ereignis in der Zukunft). Ich nutze keine fertige Bilbliothek, sondern eigenen Code. Nun möchte ich gerne meine Lösung unabhängig überprüfen.

Datum A und B sind folgendermaßen angegeben:
Jahr, Monat, Tag im Monat, Stunde, Minute, Sekunde

Die Differenz:
Tage, Stunden, Minuten, Sekunden

Vielleicht hat jemand Lust und Zeit, mir hierbei zu helfen.

Ich gebe hier extra keine weiteren Infos zur Berechnung, damit nicht mögliche Fehler von mir in die Berechnung einfließen.

Also vielleicht hat jemand ja Lust, an einem Beispiel (möglichst über mehrere Jahrzehnte, nicht über 2099), die Zeitdifferenz zu berechnen, ich würde mich jedenfalls sehr freuen ... und hoffe, dass mein Ergebnis stimmt :) Aber nicht, dass sich jemand heute Abend "abquält", also es ist nicht so eilig!

Meine Lösung funktioniert für Zeiten ab 2016.

Dirk :ciao:
 
Nabend. Ist das jetzt eine Scherzfrage? Das du mal was fragst. Wird das Datum so wie die Zeit nicht ab einem bestimmten Datum durch Sekunden hoch gezählt?
Da war doch was. Kann man da nicht drauf aufbauen?
 
Wird das Datum so wie die Zeit nicht ab einem bestimmten Datum durch Sekunden hoch gezählt?

Ja, so habe ich es gelöst. Ich brauche nur mal eine Kontrollberechnung ... eine die nicht ich mache ;)
 
Hatte ich frueher in der industrie eingesetzt..auswertungen fuer einen mobilfunkbetreiber in dk
 
Wenn es .Net ist (C#, VB), einfach die 2 DateTime subtrahieren. Dann bekommst du ein TimeSpan zurück.
upload_2017-11-10_7-46-43.png
 


CodeBox BascomAVR
        Dim Date1 As DateTime
        Dim Date2 As DateTime = DateTime.UtcNow
        IO.File.AppendAllText("D:\Test.csv", "Aktuell:;" & Date2.ToString & vbCrLf)
        IO.File.AppendAllText("D:\Test.csv", _
          "Jahr;" & _
          "Tage;" & _
          "Stunden;" & _
          "Minuten;" & _
          "Sekunden" & _
          vbCrLf _
        )
        For i As Integer = 2000 To 2099
            Date1 = New DateTime(i, 1, 1)
            Dim Diff As TimeSpan = Date2 - Date1
            IO.File.AppendAllText("D:\Test.csv", _
              i.ToString & ";" & _
              Diff.Days.ToString & ";" & _
              Diff.Hours.ToString & ";" & _
              Diff.Minutes.ToString & ";" & _
              Diff.Seconds.ToString & _
              vbCrLf _
            )
        Next
        Stop


Habs für dich mal durchlaufen lassen und als csv angehängt ;)
 

Anhänge

  • Test.zip
    746 Bytes · Aufrufe: 1
  • Like
Reaktionen: Dirk
Hallo Tommy,

vielen Dank. Ich wollte es mir am Wochenende selber programmieren, aber dies hilft jetzt schon mal weiter.

Ab 2018 gibt es negative Stunden, Minuten und Sekunden. Da müsste ein Tag Differenz abgezogen werden, also 24 Stunden weniger und diese müssten dann zu Stunden, Minuten, Sekunden addiert werden, damit dies alles positiv wird. Ab 2018 ist dann auch denke 1 Sekunde Fehler drin, es kann sein weil im Moment alles negativ ist. Da muss ich mir noch mal mehr Zeit für nehmen.

2018;-51;-16;-40;-47

2018;50;07;19;12 sollten stimmen, wenn man 1 Tag in die Stunden:Minuten:Sekunden einfließen läßt.

Interessant wären auch nicht nur ein anderes Jahr, sondern auch anderer Monat, Stunde, Minute und Sekunde der aktuellen Zeit zur Ereigniszeit.
 
Man kann ja auch addieren. Oder die Rechnung umdrehen, kommt auf's Selbe hinaus.
An die Schaltsekunde (kenn ich tatsächlich nur wegen meinen Spielereien mit DCF77) hatte ich grad auch gedacht. Schaltjahre ist ja einfach. Einfach die letzten 2 bits auf 0bxxxxxx00 prüfen. Falls ja -> Schaltjahr. Selbstverständlich bietet unser kryptisches Datum/Uhrzeit Format da auch noch gewissen Spielraum.
 
Wie ist das mit den Schaltsekunden? Die kannst Du ja nicht vorhersagen.

So genau braucht es nicht sein, die grundsätzliche Berechnung sollte aber stimmen. 2017 ist eine Sekunde länger?!, das wird die eine Sekunde Differenz ab 2018 sein. Für die Ist-Zeit läuft eine RTC, da gibt es pro Jahr sowieso Abweichungen. Noch muss man auch wegen Sommerzeit neu einstellen.
 
Korrekt. Aber, auch wenn ich Dirks "Bastelkünste" hoch schätze, ich gehe nicht davon aus dass sie die nächsten knapp 100 Jahre überlebt, oder noch genutzt wird ;)
 
Hi Dirk,

Zeitdifferenz berechnen .. wie wärs mit Excel ?
Berechnung :
Zeitdifferenz Werte.jpg
Formeln :
Zeitdifferenz Formelansicht.jpg
Spalte A ist auf Datum formatiert und Spalte B auf Uhrzeit.

Das Ergebnis steht hier noch in Tagen. Bei Runterbrechen auf Jahre und Tage müssen die Schaltjahre mit berücksichtigt werden.

Gruß
Pirx
 
Hallo Pirx,

ja an Excel habe ich auch schon gedacht.

Wenn ich aber hier auch wieder von Sekunden auf Tage usw. rechnen und dann auch noch Schaltjahre berücksichtigen muss, könnte ich auch gleich meine fertige Mikrocontrollerversion nehmen, die macht das ja eigentlich schon perfekt. Ich bräuchte halt eine Lösung mit der ich möglichst unabhängig von mir meine aktuelle Lösung auf dem Mikrocontroller überprüfen kann. Ich hatte ursprünglich daran gedacht, dass mir einfach jemand einige Beispiele bringt, das wäre auf jedenfall dann unabhängig :-D Ich kann mir aber auch auf Basis Tommys Lösung ein kleines PC Programm schreiben, die mir ein paar Daten mit Zeitdifferenz berechnet, das ganze ist auch nicht sooo kompliziert.

Dirk :ciao:
 
Hallo Pirx,

ja an Excel habe ich auch schon gedacht.

Wenn ich aber hier auch wieder von Sekunden auf Tage usw. rechnen und dann auch noch Schaltjahre berücksichtigen muss, könnte ich auch gleich meine fertige Mikrocontrollerversion nehmen, die macht das ja eigentlich schon perfekt. Ich bräuchte halt eine Lösung mit der ich möglichst unabhängig von mir meine aktuelle Lösung auf dem Mikrocontroller überprüfen kann. Ich hatte ursprünglich daran gedacht, dass mir einfach jemand einige Beispiele bringt, das wäre auf jedenfall dann unabhängig :-D Ich kann mir aber auch auf Basis Tommys Lösung ein kleines PC Programm schreiben, die mir ein paar Daten mit Zeitdifferenz berechnet, das ganze ist auch nicht sooo kompliziert.

Dirk :ciao:

https://www.timeanddate.de/datum/zeitspanne-sekunde
 
  • Like
Reaktionen: Dirk und TommyB
Ich habe nun einige Beispiele mit https://www.timeanddate.de/datum/zeitspanne-sekunde erstellt und mit meiner Lösung (Mikrocontroller-Projekt) verglichen, beides stimmt immer überein.

Zum Beispiel:
Code:
Von: 14. März 2017, 04:44:26
Bis: 16. Mai 2020, 06:45:34
Ergebnis: 1159 Tage, 2 Stunden, 1 Minute und 8 Sekunden

Von: 25. Januar 2017, 09:33:03
Bis: 16. Mai 2025, 18:41:44
Ergebnis: 3033 Tage, 9 Stunden, 8 Minuten und 41 Sekunden

Von: 25. Januar 2017, 09:33:03
Bis: 16. Juli 2080, 02:41:44
Ergebnis: 23 182 Tage, 17 Stunden, 8 Minuten und 41 Sekunden

Dirk :ciao:
 
Hi,

in irgend einem alten Heft für den ZX-Spectrum habe ich Basic-Quellcode für komplette Datums/Zeit-Routinen.
Müßte ich nur suchen und hoffentlich finden ;)
Da gibts dann sogar noch Zeilennummern im Programm :D

Gruß
Dino
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)