Como faço para verificar se a data está correta usando o Joda?
Exemplo:
Tenho uma String = "33/11/2013"
Se eu adiciono está String no DateTime, ele vai faz os cálculos e arrumar a data para 03/12/2013, mas eu quero dizer que está inválida e pedir para digitar novamente.
Alguém pode ajudar? Valeu!
Só usar o método setLenient
boolean isLegalDate(String s) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setLenient(false);
return sdf.parse(s, new ParsePosition(0)) != null;
}
Não achei desse jeito usando o joda.
Achei isto aqui no StackOverflow - ele diz que você não pode usar o construtor que recebe String diretamente, e sim especificar um formato e usar parseDateTime.
O método parseDateTime gera uma exceção (não sei qual, ele simplesmente capturou “Exception”, o que não é uma boa prática).
Dê uma olhadinha neste código, você provavelmente irá adaptá-lo.
import org.joda.time.format.*;
import org.joda.time.DateTime;
org.joda.time.DateTime parseDate(String maybeDate, String format) {
org.joda.time.DateTime date = null;
try {
DateTimeFormatter fmt = DateTimeFormat.forPattern(format);
date = fmt.parseDateTime(maybeDate);
} catch (Exception e) { }
return date;
}
Acho que é IllegalFieldValueException. Valeu amigo!