当我尝试转换为日期时间时,我得到以下错误:
字符串未被识别为有效的日期时间。
cost.b_date = DateTime.Parse(c_date.Text) ;//c_date.Text = 12/28/2012
Then i try
string date = string.Format("{0:yyyy-MM-dd}",c_date.Text);
cost.b_date = DateTime.Parse(date) ;
但是我得到相同的异常如何解决这个问题
当输入是字符串时使用string.Format
是没有意义的。
如果您知道字符串的格式,则应该使用DateTime.ParseExact
或DateTime.TryParseExact
。例如,对于您得到的字符串,您可以使用:
DateTime date = DateTime.ParseExact(text, "MM/dd/yyyy",
CultureInfo.InvariantCulture);
你应该考虑:
- 这是用户输入吗?如果是这样,使用
TryParseExact
更容易检测用户错误而不会出现异常。 - 你确定知道确切的格式吗?如果没有,使用
DateTime.TryParse
可能更合适。 - 你真的了解这里的文化吗?如果它不是当前线程的区域性,你应该显式指定它。
- 你有得到的值作为文本开始吗?如果您可以使用另一种输入形式,将值作为
DateTime
开始,那将是可取的。
CultureInfo provider = CultureInfo.InvariantCulture;
DateTime result = DateTime.ParseExact(c_date.Text, "d", provider);
尝试使用DateTime.ParseExact.
DateTime date = DateTime.ParseExact(c_date.Text, "yyyy/MM/dd", null);