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



ihave windows表单应用程序c#,当我单击一行的编辑时,datagridview中的日期必须进入dateTimePicker,但是当日期的日期开始时,我获得了这个错误:

system.formatexception:'字符串未被识别为有效的日期时间。从索引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#应用代码和错误

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

"从索引0开始有一个未知的单词"

不是普通的不兼容日期格式错误消息。在将DNN分配到DatePicker之前,请查看DNN,以显示索引0的内容并确认您正在分配一个字符串。

您应该查看 CustomFormat属性并验证它适合您要设置的文本。

来自MSDN -DateTimePicker.Text Property

此属性返回的字符串等于值属性,并应用了适当的格式或自定义格式。例如,如果"值属性"设置为06/01/2001 12:00:00 AM,而定制属性设置为" DDDD,MMMM DD,YYYY",则文本属性值为" 2001年6月1日,星期五"。
设置此属性时,字符串必须可转换为DateTime类的实例。可以定义一种自定义格式,该格式导致无法转换为有效的DateTime值的字符串。因此,如果将文本属性返回的字符串传递回文本属性,可能会导致错误。如果字符串无法转换为日期/时间值,则DateTime类会抛出formatexception。

如果DataGrid中的列已经是DateTime,则无需使用字符串,只需将其分配给Picker:

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);

最新更新