VB.Net – Datum

Des öfteren habe ich das Problem das ich eine Datei mit einen Datum versehen möchte. Zum Beispiel soll ein Logfile erstellt werden in welchen das Datum im Dateinamen enthalten ist. Man könnte nun ganz einfach das heutige Datum nehmen und daraus den Dateinamen bilden. Dies würde dann so aussehen:

24.09.2009_log.txt oder 24. September 2009_log.txt
Diese Sonderzeichen („.“) sind unter Windows durchaus zulässig und Windows kann mit solchen Sonderzeichen umgehen. Wie hier nach zu lesen ist, dürfen nur diese Sonderzeichen „< > ? “ : | \ / *“ nicht in Dateinamen verwendet werden. Doch trennt der Punkt eigentlich die Dateierweiterung vom Dateinamen. Etwas eleganter könnte es so aussehen:
2009_09_24_log.txt oder 24_september_2009.txt
Wobei die Angabe Jahr, Monat, Tag sich perfekt für die Sortierung an Hand des Dateinamen eignet.
Nun zum praktischen.

Public date_complete(5) as String

In diesen Beispiel lege ich eine globale Variable(Array) an, um später komfortabel überall darauf zu zugreifen.

Public Sub func_full_date

Ein Funktion ist nicht notwendig, da ich die globale Variablen innerhalb der Sub bestücke. Also kein Return.

Dim datum As Date

Datums Variable definieren.

date_complete(0) = datum.today.Year

Das Jahr in das erste Arrayfeld.

If datum.today.Month < = 9 Then
    date_complete(1) = "0" & datum.today.Month
Else
    date_complete(1) = datum.today.Month
End If

Prüfen ob der Monat unter 10 liegt um nicht z.B. 9 sondern 09 zu erhalten, deswegen auch das Array als String.

If datum.today.day < = 9 Then
    date_complete(2) = "0" & datum.today.day
Else
    date_complete(2) = datum.today.day
End If

Tage

If datum.today.hour < = 9 Then
    date_complete(3) = "0" & datum.today.Hour
Else
    date_complete(3) = datum.today.Hour
End If

Stunden

If datum.today.Minute < = 9 Then
    date_complete(4) = "0" & datum.today.minute
Else
    date_complete(4) = datum.today.minute
End If

Minuten

If datum.today.Second < = 9 Then
    date_complete(5) = "0" & datum.today.Second
Else
    date_complete(5) = datum.today.Second
End If

Sekunden

End Sub

Wie man sehen kann fange ich die Zahlen kleiner 10 ab und setze ein Null davor. Somit erhält man das Datum 2009_09_24 anstatt 2009_9_24.
Die Sub nutzt man wie folgt:

call func_full_date

Sub aufrufen > date_complete wird mit dem aktuellen Datum und der aktuellen Uhrzeit bestückt.
Das Array ist nach dem ausführen der Sub mit folgenden Werten gefüllt.

date_complete(0) = 2009 'Jahr
date_complete(1) = 09 'Monat
date_complete(2) = 24 'Tag
date_complete(3) = 20 'Stunde
date_complete(4) = 50 'Minuten
date_complete(5) = 20 'Sekunden

Hier noch die komplette Funktion.

Public Sub func_full_date
Dim datum As Date
date_complete(0) = datum.today.Year
If datum.today.Month < = 9 Then
    date_complete(1) = "0" & datum.today.Month
Else
    date_complete(1) = datum.today.Month
End If
If datum.today.day < = 9 Then
    date_complete(2) = "0" & datum.today.day
Else
    date_complete(2) = datum.today.day
End If
If datum.today.hour < = 9 Then
    date_complete(3) = "0" & datum.today.Hour
Else
    date_complete(3) = datum.today.Hour
End If
If datum.today.Minute < = 9 Then
    date_complete(4) = "0" & datum.today.minute
Else
    date_complete(4) = datum.today.minute
End If
If datum.today.Second < = 9 Then
    date_complete(5) = "0" & datum.today.Second
Else
    date_complete(5) = datum.today.Second
End If
End Sub