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:
[code]public String getHoje(){
String diaf = null;
String mesf = null;
String retorno = null;
Calendar calendar = new GregorianCalendar();
Date hoje = new Date();
calendar.setTime(hoje);
int semana = calendar.get(Calendar.DAY_OF_WEEK);
int mes = calendar.get(Calendar.MONTH);
int dia = calendar.get(Calendar.DAY_OF_MONTH);
int ano = calendar.get(Calendar.YEAR);
// semana
switch(semana){
case 1: diaf = "Domingo";
case 2: diaf = "Segunda";
case 3: diaf = "Terça";
case 4: diaf = "Quarta";
case 5: diaf = "Quinta";
case 6: diaf = "Sexta";
case 7: diaf = "Sábado";
}
// mês
switch(mes) {
case 1: mesf = "Janeiro";
case 2: mesf = "Fevereiro";
case 3: mesf = "Março";
case 4: mesf = "Abril";
case 5: mesf = "Maio";
case 6: mesf = "Junho";
case 7: mesf = "Julho";
case 8: mesf = "Agosto";
case 9: mesf = "Setembro";
case 10: mesf = "Outubro";
case 11: mesf = "Novembro";
case 12: mesf = "Dezembro";
}
retorno = diaf+", "+dia+" de "+mesf+", de "+ano;
return retorno;
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!
Tenta assim:
// semana
switch(semana){
case 1: diaf = "Domingo"; break;
case 2: diaf = "Segunda"; break;
case 3: diaf = "Terça"; break;
case 4: diaf = "Quarta"; break;
case 5: diaf = "Quinta"; break;
case 6: diaf = "Sexta"; break;
case 7: diaf = "Sábado"; break;
}
// mês
switch(mes) {
case 1: mesf = "Janeiro"; break;
case 2: mesf = "Fevereiro"; break;
case 3: mesf = "Março"; break;
case 4: mesf = "Abril"; break;
case 5: mesf = "Maio"; break;
case 6: mesf = "Junho"; break;
case 7: mesf = "Julho"; break;
case 8: mesf = "Agosto"; break;
case 9: mesf = "Setembro"; break;
case 10: mesf = "Outubro"; break;
case 11: mesf = "Novembro"; break;
case 12: mesf = "Dezembro"; break;
}
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.
import java.text.*;
import java.util.*;
public class Test {
public static void main(String args[]) {
DateFormat dfmt = new SimpleDateFormat("EEEE, d MMMM yyyy");
Date hoje = Calendar.getInstance(Locale.getDefault()).getTime();
System.out.println(dfmt.format(hoje));
}
}
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 {
public static void main(String args[]) {
DateFormat dfmt = new SimpleDateFormat("EEEE, d 'de' MMMM 'de' yyyy");
Date hoje = Calendar.getInstance(Locale.getDefault()).getTime();
System.out.println(dfmt.format(hoje));
}
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