如何在asp.net c#中将文本框字符串转换为日期时间?

How to convert a Textbox String to a Datetime in asp.net c#?

本问题已经有最佳答案,请猛点这里访问。

如何在asp.net c#中将文本框字符串转换为datetime?

我试过这个:

1
2
3
DateTime d2 = Convert.ToDateTime(tbx_Created.Text);
string createdformatted = d2.ToString("MM/dd/yyyy hh:mm:ss tt");
DateTime CreatdDate = DateTime.ParseExact(tbx_Created.Text,"MM/dd/yyyy hh:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture);

但它显示了这个错误:

String was not recognized as a valid DateTime

我把15-6-2016给了文本框。

请指教。


您可以像这样解析用户输入:

1
DateTime enteredDate = DateTime.Parse(enteredString);

如果您具有该字符串的特定格式,则应使用其他方法:

1
DateTime loadedDate = DateTime.ParseExact(loadedString,"d", null);

您的格式输入应与Exact匹配:

1
DateTime.ParseExact("24/01/2013","dd/MM/yyyy");

资源


对于"15-6-2016"输入,日期时间模式应为"d-M-yyyy"

1
2
3
   DateTime CreatdDate = DateTime.ParseExact(tbx_Created.Text,
    "d-M-yyyy",
     System.Globalization.CultureInfo.InvariantCulture);

您可以尝试一次应用多个模式,如下所示:

1
2
3
4
5
6
   DateTime CreatdDate = DateTime.ParseExact(tbx_Created.Text,
     new String[] {
      "MM/dd/yyyy hh:mm:ss tt", // your initial pattern, recommended way
      "d-M-yyyy"},              // actual input, tolerated way
     System.Globalization.CultureInfo.InvariantCulture,
     DateTimeStyles.AssumeLocal);


1
2
DateTime datetime = Convert.ToDateTime(txbx_created.Text);
String CurrentTime = String.Format("{0:MM/dd/yyyy HH:mm}", datetime);

1
DateTime d2= DateTime.Parse(tbx_Created.Text);

更好的方法是:

1
2
3
4
5
DateTime d2;
if (!DateTime.TryParse(tbx_Created.Text, out myDate))
{
    // handle parse failure
}

使用ParseExact以精确格式解析。 但在解析之前检查它是否正在解析将使用TryParseExact有效

1
2
3
4
5
if (!DateTime.TryParseExact("15-6-2016","dd-M-yyyy",null))
{
    myDate = DateTime.ParseExact("15-6-2016","dd-M-yyyy", null);
    Console.WriteLine(myDate);
}

1
DateTime CreatdDate = DateTime.ParseExact(tbx_Created.Text,"d-M-yyyy", null);


您使用MM表示月份,而月份值6而不是06因此您需要使用M表示月份。

1
2
DateTime dt = DateTime.Now;
DateTime.TryParseExact(tbx_Created.Text,"dd-M-yyyy", System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.None, out dt);