User Tools

Site Tools


vba:classes:date:index

[VBA] DateTime + DateInterval

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.

Das Modul hat versteckte Attribute. Damit diese aktiv übernommen werden reicht es nicht aus, den Code in ein neues Modul zu kopieren. Man muss das Modul aus der Datei nach VBA importieren.
Bild zum Import

Download datetime.cls (V-1.9.1)
Download dateinterval.cls (V-1.6.0)

DateTime

Version 1.9.1 28.06.2016

DateTime repräsentiert ein Datum inkl. Zeit. Dazu diverse Funktionen, die man sich für eine Datumsklasse wünscht.

DateInterval

Version 1.6.0 21.06.2016

DateInterval stellt ein Abstand zwischen 2 Datums dar. Als Grundlage dient ISO8601 Duration

Beispiele

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)
 
'Differenz berechnen und formatiert ausgeben
Dim di As DateInterval: Set di = dt1.diff(dt2)
Debug.Print di.format("E\s ge\ht \noc\h Y Ja\h\re, M \Mo\nate u\n\d D Tage")
--> 'Es geht noch 0 Jahre, 3 Monate und 12 Tage

'Dasselbe mit der format2() Funktion (gibt es auch für DateTime)
Debug.Print di.format2("Es geht noch {$Y} Jahre, {$M} Monate und {$D} Tage")
--> Es geht noch 0 Jahre, 3 Monate und 12 Tage

DateTime aus einem Datumsstring erstellen

?DateTime("20151101", "YYYYMMDD").dateValue
01.11.2015 

Ein kleines Einzeilerbeispiel, bei dem 3 Moante und 4 Tage zu einem defniertem Datum hinzugezählt wird

?DateTime(#8/25/2014#).add("P3M4D").dateValue
29.11.2014

Und dasselbe über die Serial-Methode des [VBA] DateInterval

?DateTime(#8/25/2014#).add(DateInterval.serial(,3,4)).dateValue
29.11.2014

Und nochmals dasselbe, mit der addSingleValue() Methode des DateTime Objektes

?DateTime(#8/25/2014#).addSingleValue("M", 3).addSingleValue("D", 4).dateValue
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

Mit Kalenderwochen arbeiten

'Erster Tag einer Kalenderwoche und letzter Tag einer Kalenderwoche
?DateTime("13-2015","WW-YYYY").dateValue
23.03.2015 
?DateTime("132015","WWYYYY").add("P6D").dateValue
29.03.2015 
 
' Und dasseleb mit der addSIngleVaue Methode
?DateTime("132015","WWYYYY").addSingleValue("D", 6).dateValue
29.03.2015

Discussion

Enter your comment. Wiki syntax is allowed:
If you can't read the letters on the image, download this .wav file to get them read to you.
 
vba/classes/date/index.txt · Last modified: 28.06.2016 11:46:22 by yaslaw