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