C√°lculo Simples de Data sem o uso de Date ou Calendar

Uma das grandes dificuldades do Java √© trabalhar com datas. Existem diversas APIs que resolvem esse problema de forma completa. No entanto atrav√©s de um simples c√°lculo utilizando os operadores “/” (divis√£o) e “%” (resto), somos capazes de obter o resultado sem a utiliza√ß√£o de nenhuma API espec√≠fica. Obviamente trabalhando com String.

Saída:
Hoje é: dia 3, mês 4, ano 14.

Hoje é: dia 23, mês 4, ano 2014.

[php]
public class Main {

public static void main(String[] args) {

String hojeComAnoEmDoisDigitos = "030414";
System.out.println(escreverDataPorExtensoComAnoEmDoisDigitos(hojeComAnoEmDoisDigitos));

String hojeComAnoEmQuatroDigitos = "23042014";
System.out.println(escreverDataPorExtensoComAnoEmQuatroDigitos(hojeComAnoEmQuatroDigitos));
}

public static String escreverDataPorExtensoComAnoEmDoisDigitos(String hojeComAnoEmDoisDigitos) {
try {

if(!isDataValida(hojeComAnoEmDoisDigitos, 6))
return ("Data Inválida, Verifique se o dia, o mês e ano possuem 2 dígitos.");

Integer divisorDiaDoisDigitos = 10_000;
Integer divisorAnoDoisDigitos = 100;

Integer hoje = Integer.parseInt(hojeComAnoEmDoisDigitos);

Integer dia;
Integer mes;
Integer ano;

dia = (hoje / divisorDiaDoisDigitos);
mes = (hoje / divisorAnoDoisDigitos) % 100;
ano = hoje % divisorAnoDoisDigitos;

return String.format("Hoje é: dia %d, mês %d, ano %d. \n", dia, mes, ano);

} catch (NumberFormatException e) {
return "Erro ao formatar valor para n√ļmero.";
}
}

public static String escreverDataPorExtensoComAnoEmQuatroDigitos(String hojeComAnoEmQuatroDigitos) {
try {

if(!isDataValida(hojeComAnoEmQuatroDigitos, 8))
return ("Data Inválida, Verifique se o dia, o mês possuem 2 dígitos e o ano quatro.");

Integer hoje = Integer.parseInt(hojeComAnoEmQuatroDigitos);

Integer divisorDiaQuatroDigitos = 1_000_000;
Integer divisorAnoQuatroDigitos = 10_000;

Integer dia;
Integer mes;
Integer ano;

dia = (hoje / divisorDiaQuatroDigitos);
mes = (hoje / divisorAnoQuatroDigitos) % 100;
ano = hoje % divisorAnoQuatroDigitos;

return String.format("Hoje é: dia %d, mês %d, ano %d. \n", dia, mes, ano);

} catch (NumberFormatException e) {
return "Erro ao formatar valor para n√ļmero.";
}
}

private static boolean isDataValida(String hoje, int i) {
return hoje.length() == i;
}

}[/php]

Comente este artigo!