【发布时间】:2017-01-29 16:10:37
【问题描述】:
我有一个蒙版的日期文本框:
<xctk:MaskedTextBox x:Name="txtDataNasc" Mask="##/##/####" HorizontalAlignment="Left" Height="27" TextWrapping="Wrap" VerticalAlignment="Top" Width="199" Margin="121,133,0,0" TextChanged="txtDataNasc_TextChanged"/>
在那个文本框 Text_Changed 属性上,我将它的值解析为 DateTime:
_student.Student_birthDate = DateTime.ParseExact(txtDataNasc.Text.ToString(), "yyyy-MM-dd h:mm tt", CultureInfo.InvariantCulture);
但这不是一个有效的日期时间字符串。我试过了:
stg.Replace("/", "-").Replace("#", "");
但它仍然保留 textMask。如何在解析时删除掩码?
TextChanged 上的所有内容如下所示:
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);
【问题讨论】:
-
您的
Mask和您的格式在我看来不匹配。为什么不只使用MM/dd/yyyy或dd/MM/yyyy(我不知道哪个是正确的)来代替?如果您的 MaskedTextBox 没有有它,为什么还需要h:mm tt部分?您根本不需要使用这个stg字符串因为您不会在任何地方使用它。此外,这些Replace方法返回一个新的字符串实例。他们不/不能修改当前实例,因为字符串是不可变的。 -
只需
DateTime.ParseExact(txtDataNasc.Text, "MM/dd/yyyy", CultureInfo.InvariantCulture)或DateTime.ParseExact(txtDataNasc.Text, "dd/MM/yyyyy", CultureInfo.InvariantCulture)(取决于##是几天还是几个月)似乎足以使用它。
标签: c# wpf parsing datetime format