Mit dieser Prüffunktion ist eine flexible Datumsangabe möglich. So wird für den aktuellen Tag nur ein Leerzeichen verwendet. Wird ein Tag im aktuellen Monat benötigt gibt man nur diesen Tag an, bei Tag und Monat verfährt man entsprechend. Auch ist die Verwendung eines Punktes bzw. anderen Datumstrennzeichen nicht erforderlich kann aber erfolgen. Die Grobüberprüfung erfolgt über einen Regulären Ausdruck, die schlussendliche Prüfung dann durch "IsDate". Der Reguläre Ausdruck verhindert mehrere IF bzw. CASE - Anweisungen zur entsprechenden Aufsplittung des Strings. Um Reguläre Ausdrücke verwenden zu können muss der entsprechende Namespace importiert werden. Imports System.Text.RegularExpressions ''' <summary> ''' Prüft Zeichenkette mittels Regulären Ausdruck auf Korrekte Datumsangabe ''' und gibt das Datum im aktuellen Datumsformat zurück. ''' Dabei wird folgende Funktionalität unterstützt: ''' - Verwendung verschiedener Datumstrennzeichen . / - oder ohne ''' Trennzeichen als fortlaufende Zahlenkette ''' - Angabe eines Leerzeichens für das Tagesdatum ''' - Angabe des Tages - z. B. 15 Monat und Jahr werden automatisch ''' entsprechend aktuellem Monat + Jahr ergänzt also im ''' August 2008 zu 15.08.2008 ''' - Angabe Tag + Monat - z. B. 1509 oder 15.09 oder 15-09 oder 15/09 ''' wird zu 15.08.aktuellesJahr ''' - Angabe tag + Monat + Jahr z.B. 020509 oder 02.05.09 oder 02-05-09 usw. ''' wird zu 02.05.2009 ''' Durch den Regex - Ausdrucks ist die Prüfung auf einen gültigen String bei ''' oben angegebener Funktionalität ohne endlose IF oder CASE - Anweisungen ''' möglich. ''' Bei einem Fehlerhaften String wird ein Leerstring zurückgegeben. ''' </summary> ''' <param name="Zeikette">zu prüfender String</param> ''' <returns>gültiges Datum oder im Fehlerfall Leerstring</returns> Public Function GetDatum(ByVal Zeikette As String) As String Dim Jahr As String = DateTime.Now.Year Dim Monat As String = DateTime.Now.Month If Zeikette = " " Then Return Format(DateTime.Now, "d") Else Dim r As New Regex("(?<Tag>3[01]|[012]?[0-9])([./-])?" & _ "(?<Monat>1[012]|0[0-9])?([./-])?(?<Jahr>(19|20)?\d{2}|\d{2})?") Dim m As Match = r.Match(Zeikette) If m.Success AndAlso Len(Zeikette) = (m.Groups("Tag").Length + _ m.Groups("Monat").Length + m.Groups("Jahr").Length) AndAlso Not _ (m.Groups("Monat").Value = "" And m.Groups("Jahr").Value <> "") Then Monat = IIf(m.Groups("Monat").Value = "", Monat, m.Groups("Monat").Value) Jahr = IIf(m.Groups("Jahr").Value = "", Jahr, m.Groups("Jahr").Value) Zeikette = String.Format("{0}.{1}.{2}", m.Groups("Tag").Value, Monat, Jahr) End If End If If IsDate(Zeikette) Then Return Format(CType(Zeikette, DateTime), "d") Else Return "" End If End Function Dieser Tipp wurde bereits 11.757 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevWizard für VB5/6 Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |