繁体   English   中英

如何解决此错误:System.FormatException:'字符串未被识别为有效的DateTime。 从索引0开始有一个未知单词。

[英]how to solve this error: System.FormatException: 'The string was not recognized as a valid DateTime. There is an unknown word starting at index 0.'

我有一个Windows窗体应用程序C#,当我点击一行上的编辑时,datagridview中的日期必须进入datetimepicker,但是当这个日期的日期开始时为0时,我得到这个错误:

System.FormatException:'字符串未被识别为有效的DateTime。 从索引0开始有一个未知单词。 我的代码是:

int currentRow = int.Parse(e.RowIndex.ToString());
string ddn = dgv_patients[9, currentRow].Value.ToString();
dateTimePicker_ddn.Text = ddn;

字符串ddn看起来像02-May-95,那天从0开始,当我尝试将ddn放入datetimepicker时会导致问题。

我多次尝试解决这个问题,没有解决办法!

看图片:

c#app 代码和错误

您应该查看CustomFormat属性并验证它是否适合您要设置的Text。

来自MSDN - DateTimePicker.Text Property

此属性返回的字符串等效于应用了适当格式或自定义格式的Value属性。 例如,如果将Value属性设置为06/01/2001 12:00:00 AM而CustomFormat属性设置为“dddd,MMMM dd,yyyy”,则Text属性值为“Friday,June 01,2001” 。
设置此属性时,该字符串必须可转换为DateTime类的实例。 可以定义自定义格式,该格式导致无法转换为有效DateTime值的字符串。 因此,从Text属性返回的字符串如果传回Text属性可能会导致错误。 如果字符串无法转换为日期/时间值,则DateTime类将抛出FormatException。

如果DataGrid中的列已经是DateTime那么就不需要使用字符串,只需将其分配给选择器即可:

dateTimePicker_ddn.Value = (DateTime)dgv_patients[9, currentRow].Value;

根据注释的另一个选项是使用DateTime.ParseExact
例如:

DateTime dt = DateTime.ParseExact("02-May-95", "dd-MMM-yy", CultureInfo.InvariantCulture);

或者在你的情况下:

dateTimePicker_ddn.Value = DateTime.ParseExact(
    dgv_patients[9, currentRow].Value.ToString(),
    "dd-MMM-yy",
    CultureInfo.InvariantCulture);

错误消息比字符串本身的格式更重要。

“从索引0开始有一个未知单词”

不是正常的不兼容日期格式错误消息。 在将dnn分配给DatePicker之前,先查看它,以显示索引0处的内容并确认您正在分配字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM