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.750 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. |
sevAniGif (VB/VBA) Anzeigen von animierten GIF-Dateien Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. 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 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
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. |