abril 23, 2014
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.
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; } }