User Tools

Site Tools


vba:classes:date:index

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
vba:classes:date:index [26.01.2015 16:49:37]
yaslaw
vba:classes:date:index [28.06.2016 11:46:22] (current)
yaslaw
Line 1: Line 1:
 ~~DISCUSSION~~ ~~DISCUSSION~~
 <​const>​ <​const>​
-    versiondt=1.2.0 +    versiondt=1.9.1 
-    vdatedt=26.01.2015 +    vdatedt=28.06.2016 
-    versiondi=1.2.0 +    versiondi=1.6.0 
-    vdatedi=26.01.2015+    vdatedi=21.06.2016
     fnamedt=datetime.cls     fnamedt=datetime.cls
     fnamedi=dateinterval.cls     fnamedi=dateinterval.cls
Line 12: Line 12:
 {{keywords>​vba,​class,​datetime,​dateinterval}} {{keywords>​vba,​class,​datetime,​dateinterval}}
 ====== [VBA] DateTime + DateInterval ====== ====== [VBA] DateTime + DateInterval ======
-<​WRAP ​right round download 50%>+Die 2 Klassen [[.:​datetime:​index]] und [[.:​dateinterval:​index]] 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. 
 + 
 +<​WRAP ​left round download 50%>
 ><fc #​808080>//​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.//</​fc>​ ><fc #​808080>//​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.//</​fc>​
 >​{{popup>:​vba:​vba_importfile.png|Bild zum Import}} >​{{popup>:​vba:​vba_importfile.png|Bild zum Import}}
Line 20: Line 23:
 </​WRAP>​ </​WRAP>​
 <WRAP clear></​WRAP>​ <WRAP clear></​WRAP>​
- 
-Die 2 Klassen [[.:​datetime:​index]] und [[.:​dateinterval:​index]] 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. 
  
 ===== DateTime ===== ===== DateTime =====
 ==Version %%versiondt%% %%vdatedt%%== ==Version %%versiondt%% %%vdatedt%%==
-[[.:​datetime:​index|DateTime]] repräsentiert ein Datum inkl. Zeit.+[[.:​datetime:​index|DateTime]] repräsentiert ein Datum inkl. Zeit. Dazu diverse Funktionen, die man sich für eine Datumsklasse wünscht.
  
 ===== DateInterval ===== ===== DateInterval =====
Line 45: Line 45:
 Dim dt2 As DateTime: ​   Set dt2 = DateTime.serial(2014,​ 12, 4, 14, 30, 15) Dim dt2 As DateTime: ​   Set dt2 = DateTime.serial(2014,​ 12, 4, 14, 30, 15)
  
-'Dierenz ​berechnen+'Differenz ​berechnen ​und formatiert ausgeben
 Dim di As DateInterval:​ Set di = dt1.diff(dt2) 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") 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
  
-'Ausgabe: +'Dasselbe mit der format2() Funktion (gibt es auch für DateTime) 
-'Es geht noch 0 Jahre, 3 Monate und 12 Tage+Debug.Print di.format2("​Es geht noch {$Y} Jahre, {$M} Monate und {$D} Tage"​) 
 +--> ​Es geht noch 0 Jahre, 3 Monate und 12 Tage
 </​code>​ </​code>​
 +
 +DateTime aus einem Datumsstring erstellen
 +<code vb>?​DateTime("​20151101",​ "​YYYYMMDD"​).dateValue
 +01.11.2015 </​code>​
  
 Ein kleines Einzeilerbeispiel,​ bei dem 3 Moante und 4 Tage zu einem defniertem Datum hinzugezählt wird Ein kleines Einzeilerbeispiel,​ bei dem 3 Moante und 4 Tage zu einem defniertem Datum hinzugezählt wird
-<code vb>?​DateTime(#​8/​25/​2014#​).add("​P3M4D"​).format("​DD.MM.YYYY"​)+<code vb>?​DateTime(#​8/​25/​2014#​).add("​P3M4D"​).dateValue
 29.11.2014</​code>​ 29.11.2014</​code>​
  
 Und dasselbe über die Serial-Methode des [[vba:​classes:​date:​dateinterval:​index]] Und dasselbe über die Serial-Methode des [[vba:​classes:​date:​dateinterval:​index]]
-<code vb>?​DateTime(#​8/​25/​2014#​).add(DateInterval.serial(,​3,​4)).format("DD.MM.YYYY")+<code vb>?​DateTime(#​8/​25/​2014#​).add(DateInterval.serial(,​3,​4)).dateValue 
 +29.11.2014</​code>​ 
 + 
 +Und nochmals dasselbe, mit der addSingleValue() Methode des DateTime Objektes 
 +<code vb>?​DateTime(#​8/​25/​2014#​).addSingleValue("M", 3).addSingleValue("D", 4).dateValue
 29.11.2014</​code>​ 29.11.2014</​code>​
  
Line 66: Line 74:
 <code vb>?​DateTime(#​8/​25/​2014#​).add("​P44D"​).format("​DD.MM.YYYY"​) <code vb>?​DateTime(#​8/​25/​2014#​).add("​P44D"​).format("​DD.MM.YYYY"​)
 08.10.2014</​code>​ 08.10.2014</​code>​
 +
 +Mit Kalenderwochen arbeiten
 +<code vb>'​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</​code>​
vba/classes/date/index.1422287377.txt.gz · Last modified: 26.01.2015 16:49:37 by yaslaw