指定日期输入格式

时间:2009-08-04 13:46:59

标签: asp.net validation date formatting

我有一个用于日期输入的asp.net文本框,我使用正则表达式让用户以dd-mm-yyyy格式输入日期,但是当我在datetime对象中转换输入日期时,月份和日期值互换。 如何指定解释此输入日期的正确方法?

5 个答案:

答案 0 :(得分:1)

您可以通过指定使用德国格式dd-mm-yyyy的文化来实现此目的:

DateTime dateTime = DateTime.Parse("01-12-2009", CultureInfo.GetCultureInfo("de-DE"));
Console.WriteLine(dateTime.ToString("dd MMM yyyy"));

产生

01 Dec 2009

当然,您确实希望在用户的文化中完成所有特定于文化的处理。因此,CultureInfo.GetCultureInfo("de-DE")应为CultureInfo.CurrentCulture

如果您的用户不习惯查看dd-mm-yyyy等日期,请不要使用该格式。

答案 1 :(得分:1)

您可以使用DateTime.ParseExact

答案 2 :(得分:1)

我建议使用DateTime.TryParseExact()并指定您的日期格式。

答案 3 :(得分:0)

我过去曾使用过DateTime.Parse()。

但听起来你有文化问题,所以这种做法可能更好:

  // Parse a date and time with no styles.
  dateString = "03/01/2009 10:00 AM";
  culture = CultureInfo.CreateSpecificCulture("en-US");
  styles = DateTimeStyles.None;
  try
  {
     result = DateTime.Parse(dateString, culture, styles);
     outputBlock.Text += String.Format("{0} converted to {1} {2}.",
                       dateString, result, result.Kind.ToString()) + "\n";
  }
  catch (FormatException)
  {
     //Error
  }

有关msdn的更多信息:http://msdn.microsoft.com/en-us/library/ey1cdcx8(VS.96).aspx

但如果效果更好,你也可以建立日期时间:

DateTime d = new DateTime(Y, M, D);

答案 4 :(得分:0)

听起来应用程序在不同的文化下运行,而不是用户输入。您可能想要change the culture到您期望的那个。