0
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。我似乎无法解决这个问题。有什么帮助吗?

4

2 回答 2

3

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

于 2013-05-10T04:43:56.567 回答
3

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

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

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

于 2013-05-10T05:22:05.617 回答