解析日期错误

本文关键字:错误 日期 | 更新日期: 2023-09-27 18:12:53

string temp = dataGridView1.Rows[x].Cells[y].ToolTipText;//stored in dd-MM-yy hh:mm:ss
           //MessageBox.Show(temp);
temp = temp[0].ToString() + temp[1].ToString() + temp[2].ToString() + temp[3].ToString() + 
temp[4].ToString() + temp[5].ToString() + temp[6].ToString() + temp[7].ToString() + 
temp[8].ToString() + temp[9].ToString();//converting to dd-MM-yyyy
labeldate = DateTime.ParseExact(temp,"dd-MM-yyyy",
                                  CultureInfo.InvariantCulture);

我使用上面的代码将字符串(dd/mm/yyyy格式)转换为日期时间类型。它在我的电脑上运行得很好。但是在其他计算机上同样给出一个错误,说字符串没有被识别为日期时间。进一步调查。我看到其他电脑的温度显示的是1/1/2013或11/3/2013,而我的电脑显示的是01-01-2013或11-03-2013。我似乎解决不了这个问题。任何帮助吗?

解析日期错误

这可能是文化问题。使用.ToString(CultureInfo.InvarientCulture),无论计算机上的区域性设置如何,您都将获得相同的结果。

如果您所做的只是试图获取日期时间的日期部分,您可以将代码简化为

string temp = dataGridView1.Rows[x].Cells[y].ToolTipText;//stored in dd-MM-yy hh:mm:ss
labeldate = DateTime.Parse(temp).Date;

至于文化问题,我将会提到。如果ToolTipText对输入的文本使用默认区域性规则,那么解析器在试图解析回文本时应该使用相同的规则。