Como validar uma data c#
conjunto de metodos em c# desenvolvidos por mim , excepto a exp regularCódigo:#region [valida datas] /*************Datas**********/ /*validacao de comparação entre duas datas , * datai - datainicial, * dataf - datafinal, * label - label erro da data final*/ public bool comparadatas(DateTime datai, DateTime dataf, System.Web.UI.WebControls.Label label) { bool res = false; if (dataf >= datai) { res = true; label.Text = "<span class=\"erroverdade\">*</span> "; } else { res = false; label.Text = "<span class=\"errofalso\">*</span> "; } return res; } /*Validação geral d um campo data */ /* data - string da data inserida na textbox * dataminima - string da data minima que pode ser inserida * label - id da labelde erro referente a um determinado campo */ public bool VDatas(string data, string dataminima, System.Web.UI.WebControls.Label label) { bool resul = false; // testa para caixa de data decisão vazia if (data == "") { label.Text = "<span class=\"errofalso\">*</span> "; resul = false; } // valida campo diferente de vazio if (data != "") { //valida para campo com 10 caracteres e campo com tim e 10 caracteres if ((data.Length == 10) || (data.Length == 10))// testa p numero de caracteres { // testa se e data valida if (validaData(data)) { string datamin = dataminima; string strdatamin = datamin.Substring(6, 4) + "-" + datamin.Substring(3, 2) + "-" + datamin.Substring(0, 2); DateTime datageral2 = Convert.ToDateTime(strdatamin); string str = data.Substring(6, 4) + "-" + data.Substring(3, 2) + "-" + data.Substring(0, 2); DateTime datageral = Convert.ToDateTime(str); //testa se é menor ou igual que a data actual if (datageral <= datageral2) { label.Text = "<span class=\"errofalso\">*</span>"; resul = false; } //testa se é maior que a data actual if (datageral > datageral2) { label.Text = "<span class=\"erroverdade\">*</span>"; resul = true; } } else { label.Text = "<span class=\"errofalso\">*</span>"; resul = false; } } else { label.Text = "<span class=\"errofalso\">*</span>"; resul = false; } } return resul; } //valida data no ambito da sua formatação private bool validaData(string str) { Regex Data = new Regex(@"^((((0?[1-9]|[12]\d|3[01])[\-](0?[13578]|1[02])[\-]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\-](0?[13456789]|1[012])[\-]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\-]0?2[\-]((1[6-9]|[2-9]\d)?\d{2}))|(29[\-]0?2[\-]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$"); return Data.IsMatch(str); } #endregion
validaData() , verifica tb se ano é bisexto ou n , recebe uma string data e verifica se a mesma é valida em ralaç
ão a uma especificação, penso que esta formatada para dd-mm-aaaa, sempre a podes alterar
devolvendo true caso seja valida e false caso contrario
comparadatas(), compara se uma data é maior que outra devolvendo true caso verdade e false caso falso ....
VDatas() tb devolve true ou false caso seja verdadeiro ou falso.
esta faz tdas as verificações possiveis (pode faltar uma ou outra mas são suficientes),
se não me engano esta espressão regular da ate ano 2040 e tal (salvo erro)
- se o campo de data vazio ou não ,
- verifica o tamanho da string da data,
- se data valida "validaData()",
- verifica se a data a tua data em relação a actual.


Citar


Marcadores