This is an old revision of the document!
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
DateInterval stellt ein Abstand zwieschen 2 Datums dar. Als Grundlage dient ISO8601 Duration
Siehe auch [VBA] DateTime
Die Klasse hat einige spezielle Attribute. Sie muss darum über den Modulbrowser→Import importiert werden, damit die Attribute aktiv sind.
Diese Attribut auf Klassenebe erlaubt es, direkt auf Funktion der Klasse zuzugreiffen
Die Methode instance() besitzt dieses Attribut. Damit ist instance() die Standartfunktion von [VBA] DateInterval
Public Function instance(ByVal iIntervalSpec As Variant) As DateInterval
Initialisiert eine DateIteratorInstanz mit einer IntervalSpec oder Anzahl Tage
Eine IntervalSpec nach ISO8601 Duration oder eine Zahl. Das währen dann Anzahlt Tage
Eine Referenz auf die aktuelle [VBA] DateInterval-Instanz
Dim di As New DateInterval di.construct ("P3DT5H")
Public Function instance(ByVal iIntervalSpec As Variant) As DateInterval
Erstellt eine neue Instanz eines DateIterators aus einer IntervalSpec oder aus Anzahl Tage
Diese Funktion hat die Attributzeile 'Attribute item.VB_UserMemId = 0'. Ergo ist es die Standartfunktion der Klasse
Eine IntervalSpec nach ISO8601 Duration oder eine Zahl. Das währen dann Anzahlt Tage
Eine neue Instanz der [VBA] DateInterval-Klasse
Dim di As DateInterval 'Einmal über Funktionsaufruf mit einer IntervalSpec Set di = DateInterval.instance("P3D") 'Und dasselbe mit Anzahl Tage. Da instance() die Standartfunktion ist, muss sie nicht explizit angegeben werden Set di = DateInterval(3)
Erstellt eine Instance von einem DateIterar aus der Differenz von 2 Datum
Public Function instanceFromDateDiff( _ Optional ByRef iDate1 As Variant = Null, _ Optional ByRef iDate2 As Variant = Null, _ Optional ByVal iAbsolute As Boolean = False _ ) As DateInterval
Das erste Datum für die Differenz. Es kann sich dabei um ein VBA-Datum, ein Datumsstring oder ein DateTime-Objekt handeln
Das zweite Datum für die Differenz. Es kann sich dabei um ein VBA-Datum, ein Datumsstring oder ein DateTime-Objekt handeln
Ein Flag mit dem man das Vorzeichen unterdrücken kann. Egal ob iDate1 oder iDate2 grösser ist, es wird immer eine positive DIfferenz sofern iAbsolute auf True steht.
Eine neue Instanz der [VBA] DateInterval-Klasse
Dim di As DateInterval Set di = DateInterval.instanceFromDateDiff(#8/1/2014 8:15:00 AM#, #9/1/2014 9:30:15 AM#)
Formatiert ein Interval zu einem String
Public Function format(ByVal iFormat As String) As String
Das Ausgabeformat
Abk. | Beschreibung |
---|---|
m | Monat ohne führende Null (1-12) |
mm | Monat mit führende Null (01-12) |
mx | Total Anzahl Monate ohne führende Null |
d | Tag ohne führende Null (1-31) |
dd | Tag mit führende Null (01-31) |
dx | Total Anzahl Tage ohne führende Null |
y | Einstelliges Jahr. Analog zu d wird es glösser geschrieben, wenn es mehr Zeichen hat |
yy | Zweistelliges Jahr |
yyyy | Vierstelliges Jahr |
h | Stunden ohne führende Null(0-24) |
hh | Stunden mit führende Null(00-24) |
hx | Total Anzahl Stunden ohne führende Null |
n | Minuten ohne führende Null(0-59) |
nn | Minuten mit führende Null(00-59) |
nx | Total Anzahl Minuten ohne führende Null |
s | Sekunden ohne führende Null(0-59) |
ss | Sekunden mit führende Null(00-59) |
sx | Total Anzahl Tage ohne führende Null |
r | Bei Muinus ein - |
R | Bei Minus ein -, bei Plus ein + |
Mit \ kann ein Format maskiert werden. damit es nichtgeparst wird: m wird als Monat ausgegeben. \m wird zu “m”
Ein formatierter String
Dim di As DateInterval Set di = DateInterval("P13Y4M1DT15H") Debug.Print di.format("\Y;: y, \M: m") '-> "Y: 13, M: 4"