我在提交按钮的文本框上使用Ajax控件工具包日历扩展器。简单。帮助将字符串日期转换为DateTime
调试程序显示文本已正确传输到调用方法,但此行转换代码将文本框文本转换为1/1/0001 12:00:00 AM。文本框的日期是这样的:4/15/2011
DateTime txtMyDate = Convert.ToDateTime(txtDate.Text);
我在做什么错?
我在提交按钮的文本框上使用Ajax控件工具包日历扩展器。简单。帮助将字符串日期转换为DateTime
调试程序显示文本已正确传输到调用方法,但此行转换代码将文本框文本转换为1/1/0001 12:00:00 AM。文本框的日期是这样的:4/15/2011
DateTime txtMyDate = Convert.ToDateTime(txtDate.Text);
我在做什么错?
您应该使用DateTime.Parse()方法:
DateTime txtMyDate = DateTime.Parse(txtDate.Text);
如前所述,你也可以用类似的语法使用DateTime.ParseExact()如图所示:
DateTime txtMyDate = DateTime.ParseExact(txtDate.Text,
[string format],
[IFormatProvider provider]);
解析VS ParseExact:
解析() - 假定数据有效并尽最大努力将其纳入该类型中,当开发人员有机会引用常识时,这些东西显得模糊不清。
ParseExact() - 只允许指定的确切格式,并会抛出任何变化。
奇怪的是,[MSDN](http://msdn.microsoft.com/en-us/library/xhz1w05e.aspx)说'Convert.ToDateTime(string)'实际上调用DateTime.Parse()',所以我'如果'Convert.ToDateTime()'没有,直接调用'DateTime.Parse()'会有点好奇。 – dandan78 2011-05-11 21:08:46
我已经尝试了两个,我仍然得到相同的结果。 – 2011-05-11 21:12:13
您仍然收到1/1/0001 12:00:00 AM作为您的DateTime?如果发生这种情况,则可能是数据未正确传入或未设置值的问题。 – 2011-05-11 21:13:55
有许多方法将文本转换为DateTime,试试这个:
DateTime txtMyDate =
DateTime.ParseExact(txtDate.Text, "M/d/yyyy", CultureInfo.InvariantCulture);
编辑:忘了文化信息的说法
这需要IFormatProvider的第三个参数。 – 2011-05-11 21:07:29
@尼克 - 是的,我意识到我错过了它,编辑它。谢谢。 – 2011-05-11 21:08:13
使用DateTime.ParseExact从提取您的日期值一个格式的日期字符串:
DateTime dateValue =
DateTime.ParseExact(stringDateValue, "M/d/yyyy",
CultureInfo.InvariantCulture);
试试
DateTime instance = DateTime.Parse(txtDate.Text) ;
这是[有点]灵活的,它会接受什么。或者,DateTime.ParseExact()
将使您能够控制转换。
那么,你想要的只是一个日期时间值,只有一个日期?! – 2011-05-11 21:19:39