Data por extenso [RESOLVIDO]

4 respostas
L

Como se faz para transformar um date em uma string que contenha a data por extenso…

Presciso que a string retornada esteja da seguinte forma

Ex: 24/05/2012 -> aos vinte e quatro dias do mês de maio do ano de dois mil e doze

primeiramente fiz o seguinte método …mas ele me retorna 24 de maio de 2012 e presciso de tudo por extenso…até os números

/** * Retorna a data passada como parametro por extenso * @param data * @return */ public String getDataPorExtenso(Date data){ DateFormat dfmt = new SimpleDateFormat("d 'de' MMMM 'de' yyyy"); return dfmt.format(data); }

4 Respostas

ErickRAR

Não conheço nada pronto, mas você pode combinar com algo daqui:

SandroSoftwares

isso aqui pode te ajudar considerando data como números concatenados…

http://www.devmedia.com.br/valor-por-extenso-em-uma-aplicacao-java/21897

SandroSoftwares

amigo através do código abaixo já consegui isolar o dia e ano em strings de números, o problema agora é transformá-as em texto:

DateFormat dfmt = new SimpleDateFormat( "'aos 'd' dias do mês de 'MMMM' de 'yyyy");  
        Date hoje = Calendar.getInstance(Locale.getDefault()).getTime();
        
           String a= dfmt.format(hoje);
        String dia="";
        String ano="";
       
        for (int b=4; b<=a.length(); b++){//começa no 4 pra já livrar o aos (com espaço)
            if((a.substring(b+1,b+2).equals(" "))){
                dia = a.substring(b, b+1); //dia com um dígito
            }else{
                dia= a.substring(b, b+2); //dia com dois digitos
            }
            break;
        }
        
        ano = a.substring(a.length()-4,a.length());
L

Obrigado pelas soluções e sujestões…consegui resolver…
Juntando as idéias passadas por vocês…fiz da seguinte maneira…

um método para pegar o mes por extenso

public String getMesPorExtenso(Date data){  
        DateFormat dfmt = new SimpleDateFormat(MMMM);  
        return dfmt.format(data);  
   }

também criei métodos para pegar o dia e data por números assim

public int getDia(Date data){
        int retorno = 0;

          GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance();
          cal.setTime(data);

         retorno =  cal.get(GregorianCalendar.DAY_OF_MONTH);
         cal.clear();
         cal = null;
         return retorno;



    }

Para pegar o mes faz a mesma coisa só mundando o parametro DAY_OF_MONTH para MONTH

depois para passar esses numeros por extenso usei a classe me passada nos links acima pelo SandroSoftwares e ErickRAR que na verdade são a mesma coisa…a mesma classe, porém modifiquei e coloquei uma flag nela para informar o uso ou não uso de moeda… ou seja para retornar uma string com “reais” e “centavos” ou retornar somente o número por extenso… e por fim depois é só unir as palavras e criar a frase… esses métodos servirão para várias outras etapas do sistema… assim ficou uma coisa útil e reaproveitável…

Obrigado a todos…

Criado 2 de outubro de 2012
Ultima resposta 3 de out. de 2012
Respostas 4
Participantes 3