【问题标题】:Convert string date to system datetime in C#在 C# 中将字符串日期转换为系统日期时间
【发布时间】:2011-09-27 09:01:19
【问题描述】:

我想在 C# 中将字符串日期转换为系统日期时间。用户通过文本框输入日期,它应该被转换为日期时间。我尝试了以下代码,但它不起作用...

DateTime ToDate = Convert.ToDateTime(txtToDate.Text);
DateTime FromDate = DateTime.Parse(txtFromDate.Text);

它显示以下异常 “字符串未被识别为有效的日期时间。”

如何做到这一点...???

【问题讨论】:

  • 是否抛出异常?
  • 它怎么'不工作'?你有例外吗?
  • @kalyan @ Edwin de Koning 我已经编辑了我的问题..看看它..
  • 你能举一些日期时间字符串不起作用的例子吗?

标签: asp.net datetime c#-4.0


【解决方案1】:

您可以使用DateTime.ParseExact()。这样你就可以指定输入字符串的格式,所以它会被正确解析,例如:

dateString = "Sun 15 Jun 2008";
format = "ddd dd MMM yyyy";
try 
{
  DateTime result = DateTime.ParseExact(dateString, format, CultureInfo.CurrentCulture);
}
catch (FormatException) 
{

}

【讨论】:

  • ..如果每个系统有不同的日期时间格式会有什么问题吗??
  • 我想会的。您最好强制最终用户使用特定格式,例如使用 MaskedTextbox。
  • ..用户输入日期使用 ajax 日历扩展器...in(MM/dd/yyyy 格式,例如今天的日期为 9/27/2011)
  • @Chirag Fanse:如果你选择 2011 年 9 月 9 日,它会起作用吗?也许它会尝试将您的日期解析为第 27 个月的第 9 天...
  • 也许我很傻,但 MM/dd/yyyy 的输入不应该是 09/27/2011 而不是 9/27/2011?
【解决方案2】:

无论用户在您的文本框中输入的任何内容都应采用有效的日期格式,否则请编写您自己的函数以使其采用有效的格式。然后将其转换为 DateTime 格式。

对于不同的格式,您可以检查: http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.aspx

如需更多帮助,您可以在此站点上查看类似问题: Validate a DateTime in C#

【讨论】:

  • @Pranav..日期以有效的日期时间格式输入,即 MM/dd/yyyy(例如,今天是 2011 年 9 月 27 日)
  • 如果仍然有问题,请尝试使用 DateTime.TryParse();
【解决方案3】:

您当然可以解析用户的输入并依靠用户始终输入正确的日期。但我建议使用特定控件来输入日期,例如 calendar control of the ajax control toolkit

通过使用这样的控件,您可以防止无效输入,并且对用户来说也更容易。如果您搜索 DatePicker 或类似的控件,我相信您可以找到很多其他类似的控件。

【讨论】:

    【解决方案4】:

    要求用户在文本框中输入特定格式的日期时间,即"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()

    【讨论】:

      【解决方案5】:

      首先你必须验证文本框的值是否有效,你可以使用 ajax MaskeditExtender 控件并限制使用输入只需要日期格式。

      【讨论】:

        【解决方案6】:

        DateTime dt = Convert.ToDateTime(date); 这里的日期是字符串。

        【讨论】:

          最近更新 更多