This is an old revision of the document!
Die 2 Klassen [VBA] DateTime und [VBA] DateInterval ergänzen sich gegenseitig. Inspiriert durch PHP wollte ich eine Klasse für das Datum haben, die mir verschiedene Möglichkeiten bietet ohne jedes mal mit VBA etwas basteln zu müssen.
<spoiler|Importhinweis>
</spoiler>
DateTime repräsentiert ein Datum inkl. Zeit.
DateInterval stellt ein Abstand zwischen 2 Datums dar. Als Grundlage dient ISO8601 Duration
Dim dt1 As DateTime: Set dt1 = DateTime(Now) 'Eine Stunde hinzufügen dt1.addSingleValue "H", 1 'Datum formatiert ausgeben Debug.Print dt1.format("DD.MM.YYYY HH:NN:SS") 'Zweites Datum definieren: 4. Dezember 2014 um 14:30:15 Dim dt2 As DateTime: Set dt2 = DateTime.serial(2014, 12, 4, 14, 30, 15) 'Dierenz berechnen Dim di As DateInterval: Set di = dt1.diff(dt2) 'Und ausgeben Debug.Print di.format("E\s ge\ht \noc\h Y Ja\h\re, M \Mo\nate u\n\d D Tage") 'Ausgabe: 'Es geht noch 0 Jahre, 3 Monate und 12 Tage
Ein kleines Einzeilerbeispiel, bei dem 3 Moante und 4 Tage zu einem defniertem Datum hinzugezählt wird
?DateTime(#8/25/2014#).add("P3M4D").format("DD.MM.YYYY") 29.11.2014
Und dasselbe über die Serial-Methode des [VBA] DateInterval
?DateTime(#8/25/2014#).add(DateInterval.serial(,3,4)).format("DD.MM.YYYY")
29.11.2014
Fast dasselbe. Aber wir zählen 44 Tage hinzu
?DateTime(#8/25/2014#).add("P44D").format("DD.MM.YYYY") 08.10.2014