This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
vba:classes:date:index [26.01.2015 16:17:54] 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 ====== | ||
- | |||
Die 2 Klassen [[.:datetime:index]] und [[.:dateinterval:index]] ergänzen sich gegenseitig. | 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. | 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. | ||
- | {{section>:snippets#vba_import_modul&noheader&firstseconly}} | + | <WRAP left round download 50%> |
- | ===== DateTime ===== | + | ><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> |
- | ==Version %%versiondt%% %%vdatedt%%== | + | >{{popup>:vba:vba_importfile.png|Bild zum Import}} |
- | [[.:datetime:index|DateTime]] repräsentiert ein Datum inkl. Zeit. | + | |
{{%%fnamedt%%|Download %%fnamedt%% (V-%%versiondt%%)}} | {{%%fnamedt%%|Download %%fnamedt%% (V-%%versiondt%%)}} | ||
+ | \\ {{%%fnamedi%%|Download %%fnamedi%% (V-%%versiondi%%)}} | ||
+ | </WRAP> | ||
+ | <WRAP clear></WRAP> | ||
+ | |||
+ | ===== DateTime ===== | ||
+ | ==Version %%versiondt%% %%vdatedt%%== | ||
+ | [[.:datetime:index|DateTime]] repräsentiert ein Datum inkl. Zeit. Dazu diverse Funktionen, die man sich für eine Datumsklasse wünscht. | ||
===== DateInterval ===== | ===== DateInterval ===== | ||
Line 27: | Line 32: | ||
[[.:dateinterval:index|DateInterval]] stellt ein Abstand zwischen 2 Datums dar. Als | [[.:dateinterval:index|DateInterval]] stellt ein Abstand zwischen 2 Datums dar. Als | ||
Grundlage dient [[http://en.wikipedia.org/wiki/Iso8601#Durations|ISO8601 Duration]] | Grundlage dient [[http://en.wikipedia.org/wiki/Iso8601#Durations|ISO8601 Duration]] | ||
- | |||
- | {{%%fnamedi%%|Download %%fnamedi%% (V-%%versiondi%%)}} | ||
===== Beispiele ===== | ===== Beispiele ===== | ||
Line 42: | 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 63: | 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> |