Entwickler-Ecke
WinForms - Geburtsdatum aus String auslesen
mo0n_ - Di 14.02.12 12:01
Titel: Geburtsdatum aus String auslesen
Guten Morgen liebes Forum,
ein neuer Tag eine neue Aufgabe:
heute habe ich folgenden string vorliegen:
C#-Quelltext
1:
| string test = "VNr:00572314;Geb:30.04.27;Auf:15.01.12-30.01.12;VorstAuf:-;HV:Kock Waltraud;HVGeb:30.04.27"; |
aus diesem string möchte ich jetzt das Geburtsdatum herauslesen.
Hilfe wäre super :)
Moderiert von
Th69: Titel angepaßt.
Th69 - Di 14.02.12 12:59
Hallo mo0n_,
und woran scheiterst du genau?
Hier schon mal ein paar Stichworte zum Einlesen: String.Split, String.Substring, DateTime.Parse, DateTime.ParseExact
mo0n_ - Di 14.02.12 13:56
hey TH69,
im Prinzip an garnichts,
ich habe das Geburtsdatum erfolgreich von Rest des strings abgetrennt:
C#-Quelltext
1: 2: 3: 4:
| string test = "VNr:00572314;Auf:15.01.12-30.01.12;VorstAuf:-;Geb:30.04.27;HV:Kock Waltraud;HVGeb:30.04.27"; test = test.Substring(test.IndexOf("Geb:") + 4); test = test.Remove(test.IndexOf(";")); DateTime geb = Convert.ToDateTime(test); |
Nun passiert aber folgendes:
Da die Person im Beispiel 27 geboren ist (1927), möchte ich, dass das Geburtsjahr komplett ausgegeben wird:
C#-Quelltext
1:
| MessageBox.Show(string.Format("{0:dd-MM-yyyy}", geb).ToString()); |
Leider ist mein Computer dagegen, und gibt mir das Jahr 2027 aus.
Meine Frage ist nun: Wie kann ich dem Programm sagen, dass es nur Daten verwenden darf, die schon vergangen sind.
mats74 - Di 14.02.12 14:38
Hallo mo()n
Das mit der Vergangenheit wird wohl auch nicht funktionieren.
Aus 01.01.10 könnte ja 1910 oder 2010 ausgegeben werden.
Da es junge und etwas ältere Menschen gibt ist das mit deinem String nicht klar definiert.
(1810 wäre Weltrekordverdächtig :wink: )
Hast Du sonst noch einen Parameter (für die Jahrhundertangabe) zur Verfügung?
mo0n_ - Di 14.02.12 14:41
Leider nein :(. Naja ich probier noch ein bisschen rum, aber wenns nicht geht, dann gehts eben nicht :-/
Ralf Jansen - Di 14.02.12 15:06
Wenn du zum Konvertieren (string -> Datetime) eine der DateTime.Parse Methoden mit IFormatProvider verwendest kannst du dort eine CultureInfo übergeben mit passend gesetztem
Kalender [
http://msdn.microsoft.com/de-de/library/system.globalization.calendar.twodigityearmax.aspx]. Dann hast du zumindest die letzten 100 Jahre korrekt und müßtest dich nur mit der Generation > 100 Jahre streiten das dein Programm für die nicht richtig funktioniert ;)
C#-Quelltext
1: 2: 3: 4:
| CultureInfo info = (CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone(); info.Calendar.TwoDigitYearMax = DateTime.Now.Year;
DateTime geb = DateTime.Parse(test,info); |
mo0n_ - Mi 15.02.12 11:44
Habs jetzt mehr oder minder hinbekommen :)
Wie immer vielen Dank für die superschnelle Hilfe
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!