In der üblichen Schreibweise lassen sich Datum-Strings nicht
korrekt sortieren - die vorne an stehende Tagesangabe wiederholt
sich ja in jedem Monat, und jeder Monat wiederholt sich in jedem
Jahr.
Zur Verwendung als sortierfähige Schlüssel oder für in der
Reihung richtig dargestellte Dateinamen muss eine Datumsangabe
absteigend formatiert werden, in der Reihenfolge Jahr, Monat, Tag
und gegebenenfalls auch noch Stunde, Minute und Sekunde. Gleichfalls
zu beachten ist, dass die Stellenzahl der einzelnen Bestandteile
gleich ist, einstellige Werte also zweistellig dargestellt werden,
oder die führende Jahresangabe einheitlich zwei- oder vierstellig
erfolgt.
Mit der Visual Basic-eigenen Format-Funktion ist das kein
Problem. Sie brauchen nur den Formatierungs-String aus den
entsprechenden Kennbuchstaben zusammen zu setzen. Zu beachten ist
dabei, dass als Kurzzeichen für "Minute" der Buchstabe
"n" zu verwenden ist, da das "m"
ja bereits für "Monat" steht.
Die folgenden Hilfsfunktionen zeigen verschiedene Möglichkeiten
solcher Formatierungen für die verschiedensten Zwecke.
Public Function FormatKeyDate(ThisDate As Date, _
Optional ByVal ShortYear As Boolean) As String
If ShortYear Then
FormatKeyDate = Format$(ThisDate, "yymmddhhnnss")
Else
FormatKeyDate = Format$(ThisDate, "yyyymmddhhnnss")
End If
End Function
Public Function FormatKeyMonth(ThisMonth As Date, _
Optional ByVal ShortYear As Boolean) As String
If ShortYear Then
FormatKeyMonth = Format$(ThisDate, "yymm")
Else
FormatKeyMonth = Format$(ThisDate, "yyyymm")
End If
End Function
Public Function FormatKeyDay(ThisDay As Date, _
Optional ByVal ShortYear As Boolean) As String
If ShortYear Then
FormatKeyDay = Format$(ThisDay, "yymmdd")
Else
FormatKeyDay = Format$(ThisDay, "yyyymmdd")
End If
End Function
Public Function FormatKeyTime(ThisTime As Date, _
Optional Seconds As Boolean = True) As String
If Seconds Then
FormatKeyTime = Format$(ThisTime, "hhnnss")
Else
FormatKeyTime = Format$(ThisTime, "hhnn")
End If
End Function
|