誕生日のテキストボックスを検証するための範囲バリデーターがあります。私は学生が私たちに登録するために21歳以上でなければならないことを確認する必要があります。「1993年12月31日」フォーマット(dd / mm / yy)を設定しました。しかし、私のデータベースはこの(mm / dd / yy)形式に設定されているため、Webサイトを実行できません。データベース形式を変更せずにこれを解決するにはどうすればよいですか?誰にとっても機能できるように。
どうも。
誕生日のテキストボックスを検証するための範囲バリデーターがあります。私は学生が私たちに登録するために21歳以上でなければならないことを確認する必要があります。「1993年12月31日」フォーマット(dd / mm / yy)を設定しました。しかし、私のデータベースはこの(mm / dd / yy)形式に設定されているため、Webサイトを実行できません。データベース形式を変更せずにこれを解決するにはどうすればよいですか?誰にとっても機能できるように。
どうも。
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;
}