====== Definitionen zu DateIterator ====== ===== Attribute ===== Die Klasse hat einige spezielle Attribute. Sie muss darum über den Modulbrowser->Import importiert werden, damit die Attribute aktiv sind. == Attribute VB_PredeclaredId = True == Diese Attribut auf Klassenebe erlaubt es, direkt auf Funktion der Klasse zuzugreiffen ==Attribute instance.VB_UserMemId = 0== Die Methode instance() besitzt dieses Attribut. Damit ist instance() die Standartfunktion von [[.:index]] ===== Methoden===== *[[#construct|construct()]] *[[#instance|instance()]] *[[#instancefromdatediff|instanceFromDateDiff()]] ==== CONSTRUCT() ==== Public Function instance(ByVal iIntervalSpec As Variant) As DateInterval Initialisiert eine [[.:index|DateIteratorInstanz]] mit einer [[#iIntervalSpec|IntervalSpec]] oder Anzahl Tage === Parameters === == iIntervalSpec == Eine %%IntervalSpec%% nach [[http://en.wikipedia.org/wiki/Iso8601#Durations|ISO8601 Duration]] oder eine Zahl. Das währen dann Anzahlt Tage === Return === Eine Referenz auf die aktuelle [[.:index]]-Instanz === Beispiel === Dim di As New DateInterval di.construct ("P3DT5H") ==== INSTANCE()==== Public Function instance(ByVal iIntervalSpec As Variant) As DateInterval Erstellt eine neue Instanz eines [[.:index|DateIterators]] aus einer [[#iIntervalSpec|IntervalSpec]] oder aus Anzahl Tage Diese Funktion hat die Attributzeile 'Attribute item.VB_UserMemId = 0'. Ergo ist es die Standartfunktion der Klasse === Parameters === == iIntervalSpec == Eine %%IntervalSpec%% nach [[http://en.wikipedia.org/wiki/Iso8601#Durations|ISO8601 Duration]] oder eine Zahl. Das währen dann Anzahlt Tage === Return === Eine neue Instanz der [[.:index]]-Klasse === Beispiele === 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) ==== INSTANCEFROMDATEDIFF() ==== Erstellt eine Instance von einem [[.:index|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 === Parameters === == iDate1 == Das erste Datum für die Differenz. Es kann sich dabei um ein VBA-Datum, ein Datumsstring oder ein [[..:datetime:index|DateTime-Objekt]] handeln == iDate2 == Das zweite Datum für die Differenz. Es kann sich dabei um ein VBA-Datum, ein Datumsstring oder ein [[..:datetime:index|DateTime-Objekt]] handeln == iAbsolute == 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. === Return === Eine neue Instanz der [[.:index]]-Klasse === Beispiel === Dim di As DateInterval Set di = DateInterval.instanceFromDateDiff(#8/1/2014 8:15:00 AM#, #9/1/2014 9:30:15 AM#) ==== FORMAT() ==== Formatiert ein Interval zu einem String Public Function format(ByVal iFormat As String) As String === Parameters === == iFormat == 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" === Return === Ein formatierter String === Beispiel === Dim di As DateInterval Set di = DateInterval("P13Y4M1DT15H") Debug.Print di.format("\Y;: y, \M: m") '-> "Y: 13, M: 4" ===== Properties ===== ***year** Die Jahre des Intervals ***month** ***day** ***hour** ***minute** ***second** ***sign** Das Vorzeichen des Interval. -1 oder 1 ***years** Anzahl Jahre insgesamt. Wird nur bei %%DateDIff%%() abgefüllt. Entspricht dem VBA.%%DateDiff%%('y', date1, date2) ***months** Dito für Monate ***days** Dito für Tage ***hours** Dito für Stunden ***minutes** Dito für Minuten ***seconds** Dito für Sekunden ***intervalSpec** Gibt den Interval als [[#intervalspec|IntervalSpec]] zurück: P[n]Y[n]M[n]DT[n]H[n]M[n]S ***intervalSpec2** [[#intervalspec|IntervalSpec]]in der Schreibweise: PYYYYMMDDThhmmss ***intervalSpec3** und P[YYYY]-[MM]-[DD]T[hh]:[mm]:[ss]