Ich habe eine maskierte Textbox für Datum:Wie Maske beim Parsing entfernen?
<xctk:MaskedTextBox x:Name="txtDataNasc" Mask="##/##/####" HorizontalAlignment="Left" Height="27" TextWrapping="Wrap" VerticalAlignment="Top" Width="199" Margin="121,133,0,0" TextChanged="txtDataNasc_TextChanged"/>
Und auf dieser Textbox Text_Changed
Eigenschaft analysieren ich es Wert Datetime ist:
_student.Student_birthDate = DateTime.ParseExact(txtDataNasc.Text.ToString(), "yyyy-MM-dd h:mm tt", CultureInfo.InvariantCulture);
Aber es ist keine gültige Datetime-String. Ich habe versucht:
stg.Replace("/", "-").Replace("#", "");
Aber es hält immer noch die textMask. Wie entferne ich die Maske beim Parsen?
Das alles, was auf TextChanged
sieht wie folgt aus:
string stg = txtDataNasc.Text.ToString();
stg.Replace("/", "-").Replace("#", "");
stg = stg + " 00:00:00";
_student.Student_birthDate = DateTime.ParseExact(txtDataNasc.Text.ToString(), "yyyy-MM-dd h:mm tt", CultureInfo.InvariantCulture);
Ihre 'Maske' und Ihr Format stimmt nicht überein, soweit ich sehen kann. Warum verwendest du nicht einfach "MM/TT/JJJJ" oder "TT/MM/JJJJ" (ich weiß nicht, welches Recht)? Warum brauchst du 'h: mm tt ', wenn deine MaskedTextBox es ** nicht ** hat? Sie müssen diese 'stg'-Saite überhaupt nicht verwenden **, da Sie sie nirgendwo verwenden **. Diese 'Replace'-Methode gibt auch eine neue String-Instanz zurück. Sie können/können die aktuelle Instanz nicht ändern, da Strings unveränderlich sind. –
Nur 'DateTime.ParseExact (txtDataNasc.Text," MM/TT/JJJJ ", CultureInfo.InvariantCulture)' oder 'DateTime.ParseExact (txtDataNasc.Text," TT/MM/JJJJ ", CultureInfo.InvariantCulture)' (abhängig von was '##' ist Tage oder Monate) scheint genug zu benutzen. –