我有一个范围验证器来验证生日的文本框。我必须确保学生必须年满 21 岁才能在我们这里注册。我设置了“31/12/1993”格式(dd/mm/yy)。但它无法运行网站,因为在我的数据库中设置为这种(mm/dd/yy)格式。我怎样才能在不改变我的数据库格式的情况下解决这个问题?以便它可以为每个人服务。
谢谢。
我有一个范围验证器来验证生日的文本框。我必须确保学生必须年满 21 岁才能在我们这里注册。我设置了“31/12/1993”格式(dd/mm/yy)。但它无法运行网站,因为在我的数据库中设置为这种(mm/dd/yy)格式。我怎样才能在不改变我的数据库格式的情况下解决这个问题?以便它可以为每个人服务。
谢谢。
在 C# 中使用 DateTime 并让 ADO 将其转换为特定于数据库的类型(您使用的是什么数据库?)并将其作为参数传递。不是作为字符串。
此外,为防止错误,请使用日历进行用户输入。
替代方案:明确指出所需的格式。
您可以检索用户的浏览器语言:
string[] languages = Request.UserLanguages;
然后用这个字符串创建一个 CultureInfo(可能需要拆分):
CultureInfo ci = new CultureInfo(languages[0].Split(";")[0]);
并获取相应的日期格式:
string datePattern = ci.DateTimeFormat.ShortDatePattern
然后使用该模式来解析用户输入。
DateTime.TryParseExact(userInput, datePattern, ...
看看——>
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;
}