我想在C#中将字符串日期转换为系统日期时间。用户通过文本框输入日期,应将其转换为日期时间。我讨厌以下代码,但它不起作用......
DateTime ToDate = Convert.ToDateTime(txtToDate.Text);
DateTime FromDate = DateTime.Parse(txtFromDate.Text);
它显示以下异常 “字符串未被识别为有效的DateTime。”
怎么做...... ???
答案 0 :(得分:2)
无论用户在文本框中输入的内容应采用有效的日期格式,否则请编写自己的函数以使其格式有效。然后将其转换为DateTime格式。
对于不同的格式,您可以检查: http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.aspx
如需更多帮助,您可以在此网站上查看类似问题: Validate a DateTime in C#
答案 1 :(得分:2)
您可以使用DateTime.ParseExact()
。这样您就可以指定输入字符串的格式,因此它将被正确解析,例如:
dateString = "Sun 15 Jun 2008";
format = "ddd dd MMM yyyy";
try
{
DateTime result = DateTime.ParseExact(dateString, format, CultureInfo.CurrentCulture);
}
catch (FormatException)
{
}
答案 2 :(得分:1)
要求用户将特定格式的日期时间输入文本框,即"ddMMyyyyhhmmss"
或"dd/MM/yyyy hh:mm:ss tt"
或"dd-MM-yyyy hh:mm:ss tt"
或其他一些格式,并使用以下代码的帮助进行转换到有效的日期时间。
DateTime ToDate = DateTime.ParseExact(txtToDate.Text, <User DateTime format as String>,
System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.None)
相反,如果上述编码变得复杂,那么您也可以尝试DateTime.TryParse()
答案 3 :(得分:1)
您当然可以解析用户的输入,并依赖用户始终输入正确的日期。但我建议使用特定控件来输入日期,例如calendar control of the ajax control toolkit。
通过使用这样的控件,您可以防止无效输入,并且对用户来说也更容易。如果你搜索DatePicker或类似的,我相信你可以找到很多其他类似的控件。
答案 4 :(得分:0)
首先,您必须验证文本框值是否有效,您可以使用ajax MaskeditExtender控件并限制使用输入仅需要日期格式。
答案 5 :(得分:0)
DateTime dt = Convert.ToDateTime(date); 这里的日期是字符串。