Duvido que eu seja o único que encontrou essa solução, mas se você tiver uma melhor, poste aqui. Eu simplesmente quero deixar esta questão aqui para que eu e outros possamos pesquisá-la mais tarde.
Eu precisava saber se uma data válida havia sido inserida em uma caixa de texto e este é o código que eu inventei. Eu disparo quando o foco sai da caixa de texto.
try
{
DateTime.Parse(startDateTextBox.Text);
}
catch
{
startDateTextBox.Text = DateTime.Today.ToShortDateString();
}
c#
datetime
validation
Matt
fonte
fonte
Parse
usa até mesmo oTryParse
Respostas:
Acredito que isso seja mais rápido e significa que você não precisa usar o feio try / catches :)
por exemplo
fonte
if(DateTime.TryParse(startDateTextBox.Text, out var temp))
:)Não use exceções para controle de fluxo. Use DateTime.ExperimenteParse e DateTime.ExperimenteParseExact . Pessoalmente, prefiro TryParseExact com um formato específico, mas acho que há momentos em que TryParse é melhor. Exemplo de uso com base em seu código original:
Razões para preferir esta abordagem:
fonte
Aqui está outra variação da solução que retorna verdadeiro se a string puder ser convertida em um
DateTime
tipo e falso caso contrário.fonte
Eu usaria o método DateTime.ExperimenteParse (): http://msdn.microsoft.com/en-us/library/system.datetime.tryparse.aspx
fonte
Que tal usar o TryParse ?
fonte
Um problema com o uso
DateTime.TryParse
é que ele não suporta o caso de uso de entrada de dados muito comum de datas inseridas sem separadores, por exemplo011508
.Aqui está um exemplo de como apoiar isso. (Isso é de um framework que estou construindo, então sua assinatura é um pouco estranha, mas a lógica central deve ser utilizável):
fonte
// suponha que a string de entrada tenha um formato de data curto.
por exemplo, "2013/7/5" retorna verdadeiro ou
"2013/2/31" retorna falso.
http://forums.asp.net/t/1250332.aspx/1
// bool booleanValue = ValidateBirthday ("12:55"); retorna falso
fonte
fonte
Todas as respostas são muito boas, mas se você quiser usar uma única função, isso pode funcionar.
fonte
Você também pode definir o
DateTime
formato para umCultureInfo
fonte
fonte
string
que pode ou não conter umDateTIme
valor. Você está verificando se um dadoDateTime
tem valores padrão (correspondendo a0001-01-01T00:00:00.0000000
). Como isso responde à pergunta?fonte
fonte