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