Pessoal,
to tentando formatar a data atual por extenso, eu até consegui formatar direitim, o problema é que fica sempre "Sábado 20 de Dezembro de 2006", sendo que hoje é Domingo 20 de Agosto, oq pode esta acontecendo ? Segue meu code:
publicStringgetHoje(){Stringdiaf=null;Stringmesf=null;Stringretorno=null;Calendarcalendar=newGregorianCalendar();Datehoje=newDate();calendar.setTime(hoje);intsemana=calendar.get(Calendar.DAY_OF_WEEK);intmes=calendar.get(Calendar.MONTH);intdia=calendar.get(Calendar.DAY_OF_MONTH);intano=calendar.get(Calendar.YEAR);// semanaswitch(semana){case1:diaf="Domingo";case2:diaf="Segunda";case3:diaf="Terça";case4:diaf="Quarta";case5:diaf="Quinta";case6:diaf="Sexta";case7:diaf="Sábado";}// mêsswitch(mes){case1:mesf="Janeiro";case2:mesf="Fevereiro";case3:mesf="Março";case4:mesf="Abril";case5:mesf="Maio";case6:mesf="Junho";case7:mesf="Julho";case8:mesf="Agosto";case9:mesf="Setembro";case10:mesf="Outubro";case11:mesf="Novembro";case12:mesf="Dezembro";}retorno=diaf+", "+dia+" de "+mesf+", de "+ano;returnretorno;}
Acho que é porque estão faltando os “breaks” no seus switch!
Assim ele vai sempre fazer todas as operações… parando na última, que é extamenjte sábado para o switch dos dias da semana e em dezembro para o switch dos meses!
O método toString(), da classe java.util.Date, já não retorna a data por extenso? Se sim, é só ajustar o Locale…
Se por acaso este toString() vier com informação de hora também, e você não as queira, creio ser possível usar um pattern apropriado com DateFormat para conseguir este efeito.
Rodrigo
sandokandias
mano, muito obrigado, deu certo !
me falta conceito ainda em JAVA, mas um dia chego la…
sandokandias
Existe uma maneira mais prática e com menos código para fazer isso ?
javaBeats
Claro!
importjava.text.*;importjava.util.*;publicclassTest{publicstaticvoidmain(Stringargs[]){DateFormatdfmt=newSimpleDateFormat("EEEE, d MMMM yyyy");Datehoje=Calendar.getInstance(Locale.getDefault()).getTime();System.out.println(dfmt.format(hoje));}}
Kara valew mesmo, eu ainda to aprendendo a linguagem, tenho muitos vícios. Dessa maneira que você posto aqui é muito mais interessante…
guerios
Infelizmente o resultado do código sugerido ainda não é o que se quer.
O resultado acima daria hoje Segunda-feira, 21 Agosto 2006.
Estou tendo o mesmo problema pois gostaria que tivesse Segunda-feira, 21 de Agosto de 2006
Então teriamos o código abaixo que dá o resultado do jeito que se quer
import java.text.;
import java.util.;
public class Test {
publicstaticvoidmain(Stringargs[]){DateFormatdfmt=newSimpleDateFormat("EEEE, d 'de' MMMM 'de' yyyy");Datehoje=Calendar.getInstance(Locale.getDefault()).getTime();System.out.println(dfmt.format(hoje));}
}
Abraço
javaBeats
Yep, como explicado no link que eu ofereci, todas as patterns (E, M, etc), que renderizam texto, se colocadas com extensão de 4 caracteres, renderizam o valor inteiro. Dessa forma, EEE renderizaria “Ter”, “Qua”, “Qui”, e EEEE renderiza “Terça”, “Quarta”, “Quinta”.
Deixei o link que é para o garoto estudar e escolher o que melhor se aplica ao caso dele