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 12.274 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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. |
sevZIP40 Pro DLL ![]() Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Tipp des Monats ![]() Matthias Kozlowski Umlaute konvertieren Ersetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Access-Tools Vol.1 ![]() Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |