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。我似乎无法解决这个问题。有什么帮助吗?
答案 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
正在使用默认的区域性规则但是正在输入文本,则解析器在尝试将其解析出来时应使用相同的规则。