为范围验证器设置dateformat dd / mm / yy

时间:2011-01-20 12:42:38

标签: asp.net date format rangevalidator

我有一个范围验证器来验证生日的文本框。我必须确保学生必须在21岁以上才能注册。我设置“31/12/1993”格式(年/月/日)。 但它无法运行网站,因为我的数据库设置为此(mm / dd / yy)格式。如何在不改变数据库格式的情况下解决这个问题?这样它就能适合每个人。

THX。

2 个答案:

答案 0 :(得分:2)

在C#中使用DateTime并让ADO将其转换为数据库特定类型(您使用的是什么数据库?)并将其作为参数传递。不是字符串。

另外,为了防止错误,请使用日历进行用户输入。

替代方案:明确指出所需的格式。

您可以检索用户的浏览器语言:

string[] languages = Request.UserLanguages;

然后使用此字符串(the split might be needed):

创建CultureInfo
CultureInfo ci = new CultureInfo(languages[0].Split(";")[0]);

并获取相应的dateformat:

string datePattern = ci.DateTimeFormat.ShortDatePattern

然后使用模式解析用户输入。

DateTime.TryParseExact(userInput, datePattern, ...

答案 1 :(得分:0)

检查出来 - >

string sBDate = "31/12/1993";
DateTime datBirthDay = ValidateDate(sBDate);

DateTime datToday = new DateTime();
datToday = DateTime.Today.Date;

if (datToday.Year - datBirthDay.Year < 21)
{ 
    //Error message:-You must be above 21.
}

public DateTime ValidateDate(string strInputDate)
{
    DateTime datReturnDate = new DateTime();
    DateTime datTempDate = new DateTime();

    datTempDate = DateTime.Parse("1/1/1900");
    string[] strArrDateFormat = {
    "dd.MM.yy",
    "dd.MM.yyyy",
    "dd-MM-yy",
    "dd-MM-yyyy",
    "dd/MM/yy",
    "dd/MM/yyyy",
    "dd MMM yy",
    "MMM yy",
    "MMM yyyy",
    "MMM-yy",
    "MMM-yyyy",
    "MMMM yyyy",
    "d MMMM yyyy",
    "dd MMMM yyyy",
    "MMMM yy",
    "d/M/yy"
};

    if (DateTime.TryParseExact(strInputDate, strArrDateFormat, null, DateTimeStyles.None, out datReturnDate))
    {
        //Format matched
    }
    else
    {
        datReturnDate = datTempDate;
    }

    return datReturnDate;
}