vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Sch?tzen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2018
 
zurück
Rubrik: Datum/Zeit und Timer · Datums- und Zeit-Funktionen   |   VB-Versionen: VB.NET27.08.08
Test auf Datumsplausibilität mit Regulärem Ausdruck

Mit dieser Prüffunktion ist eine flexible Datumsangabe möglich.

Autor:   Klaus LeutholdBewertung:     [ Jetzt bewerten ]Views:  9.061 
www.hwk-dresden.deSystem:  Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

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 9.061 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!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.
 
   

Druckansicht Druckansicht Copyright ©2000-2018 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel