Я пытаюсь создать пользовательский элемент управления специально для моего приложения, который будет использовать maskedTextBox для ограничения вводимых данных.
Теперь я хочу реализовать это в C #.
class CustomDateMask:System.Windows.Forms.MaskedTextBox
this.Mask = "00/00/2\000"; // For year 2000 and above, date format is "dd/mm/yyyy"
this.ValidatingType = typeof(System.DateTime);
Я видел регулярное выражение для того же самого, чтобы проверять мою дату, ограничивая дату, записывая события ввода и нажатия клавиш.
Теперь мой RegExp выглядит так
string regYear =@"(200[8,9]|201[0-9])"; //for year from 2008-2019 Plz correct this RegEx if wrong.
string regMonth =@"(0[1-9]|1[012])";
string regDate =@"(0[1-9]|[12][0-9]|3[01])";
string seperator=@"[- /]";
string ddmmyyyy=regDate+seperator+regMonth+seperator+regYear;
Я увидел ссылку относительно регулярного выражения для проверки формата даты.
Теперь я хочу использовать этот код в C #, который я предоставил вам в приведенной выше ссылке. Этот код написан на Perl
, и я хочу сделать ту же функциональность в C #. Но я не знаю, как получить дату, месяц, год из этого регулярного выражения, как показано ниже, например. от 1, 2, 3 доллара.
sub isvaliddate {
my $input = shift;
if ($input =~ m!^((?:19|20)\d\d)[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$!) {
# At this point, $1 holds the year, $2 the month and $3 the day of the date entered
if ($3 == 31 and ($2 == 4 or $2 == 6 or $2 == 9 or $2 == 11)) {
return 0; # 31st of a month with 30 days
} elsif ($3 >= 30 and $2 == 2) {
return 0; # February 30th or 31st
} elsif ($2 == 2 and $3 == 29 and not ($1 % 4 == 0 and ($1 % 100 != 0 or $1 % 400 == 0))) {
return 0; # February 29th outside a leap year
} else {
return 1; # Valid date
}
} else {
return 0; # Not a date
}
}
Я хочу вернуть часть даты пользователя, часть месяца и часть года, используя this.
Моя главная проблема
содержит год, месяц и день даты, введенной в трех переменных с maskedTextBox