解析日期错误

时间:2013-05-10 04:40:39

标签: c#

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格式)转换为datetime类型。它在我的电脑上工作正常。但同样在其他计算机上出现错误,表示字符串未被识别为日期时间。进一步调查。我在其他计算机上看到了临时显示的2013年1月1日或11/3/2013,而在我看来它会显示01-01-2013或11-03-2013。我似乎无法解决这个问题。有什么帮助吗?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

如果您正在尝试获取日期时间的日期部分,则可以将代码简化为

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

至于wilsjd提到的文化问题。如果ToolTipText正在使用默认的区域性规则但是正在输入文本,则解析器在尝试将其解析出来时应使用相同的规则。

相关问题