Boa noite pessoal
estou tendo problema com a conversão de uma data da seguinte maneira:
o usuário digita 30/3/9 querendo dizer 30/03/2009
ai eu utilizei a classe SimpleDateFormat com o pattern dd/MM/yyyy
mas a conversão sai 30/03/0009.
como eu controlo para que o ano fique certo?
desde já agradeço
import java.util.Date;
import java.text.*;
class TesteSeculo {
public static void main(String[] args) throws ParseException {
// http://java.sun.com/javase/6/docs/api/java/text/SimpleDateFormat.html#set2DigitYearStart(java.util.Date)
String[] exemplos = {
"30/03/09", // convertido corretamente para 30/03/2009
"30/03/2009",
"30/3/9" // como não tem 2 dígitos não vai para 30/03/2009.
};
DateFormat df1 = new SimpleDateFormat ("dd/MM/yyyy");
SimpleDateFormat df2 = new SimpleDateFormat ("dd/MM/yy");
df2.set2DigitYearStart (df1.parse ("01/01/1950"));
for (String ex : exemplos) {
Date dt = df2.parse (ex);
System.out.println (df1.format (dt));
}
}
}
Se o Joseph Emmanuel tivesse um pouco mais de cuidado (escrever 30/03/09) até funcionava OK. Mas o Java não previu o caso 30/03/9. Rode o programa acima.
Ou seja, você tem de acertar manualmente antes de mandar para o método parse, se houver apenas 1 dígito no ano.
Bom entendi o q vc quiz dizer… mas ai vou ser obrigado a eu mesmo montar um conversor?
ou como vc faria?
procuraria os / e iria separar cada valor?
Basta acertar o caso “30/3/9” para “30/3/09”. Isso não é difícil de fazer.