Tenho o seguinte exemplo, uma classe de testes, só que ela retorna a data em Inglês, como converter para português ?
Também, existe uma forma de fazer melhor esse exemplo, levando em consideração que deve ter a mesma saída ?
import java.text.*;
import java.util.*;
public class MonthFormat {
public static void main(String args[]) throws ParseException {
String s;
String s1;
String s2;
String s3;
Format formatter;
Date date = new Date();
formatter = new SimpleDateFormat("MMMM");
s = formatter.format(date); // January
formatter = new SimpleDateFormat("dd");
s1 = formatter.format(date);
formatter = new SimpleDateFormat("yyyy");
s2 = formatter.format(date);
s3 = " de ";
System.out.println("Month : " + s1+s3+s+s3+s2);
}
}
int dia = 31;
int mes = 12;
int ano = 2011;
Date data = new Date(ano-1900,mes-1,dia);
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
System.out.println(sdf.format(data));
1 curtida
fernandosavio , este construtor de date está deprecated, não é uma boa idéia utilizá-lo.
Metaleiro, você pode utilizar um DateFormat, com estilo Long e um Locale em português.
Eu tinha visto que era Deprecated… Mas sinceramente não tenho utilizado muito Date…
Só quis dar um luz para o cara…
Se tiver uma maneira melhor posta o codigo ae…
Gostaria mesmo de saber…
Na verdade o que eu quero é isso:
January = Janeiro
September = Setembro
Obrigado a todos !
[quote=Metaleiro]Na verdade o que eu quero é isso:
January = Janeiro
September = Setembro
[/quote]
É exatamente o que minha dica faz.
O style Long escreverá o nome do mês sem aquela concatenação
O locale em português te dará o nome do mês traduzido.
[quote=AbelBueno][quote=Metaleiro]Na verdade o que eu quero é isso:
January = Janeiro
September = Setembro
[/quote]
É exatamente o que minha dica faz.
O style Long escreverá o nome do mês sem aquela concatenação
O locale em português te dará o nome do mês traduzido.
[/quote]
Obrigado, encontrei isso, irei testar:
http://www.java2s.com/Code/JavaAPI/java.text/DateFormatLONG.htm
/*
* Output:
Japan: 4/28/06
Korea: Apr 28, 2006
United Kingdom: 28 April 2006
United States: Friday, April 28, 2006
* */
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
public class MainClass {
public static void main(String args[]) {
Date date = new Date();
DateFormat df;
df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.JAPAN);
System.out.println("Japan: " + df.format(date));
df = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.KOREA);
System.out.println("Korea: " + df.format(date));
df = DateFormat.getDateInstance(DateFormat.LONG, Locale.UK);
System.out.println("United Kingdom: " + df.format(date));
df = DateFormat.getDateInstance(DateFormat.FULL, Locale.US);
System.out.println("United States: " + df.format(date));
}
}
[quote=AbelBueno][quote=Metaleiro]Na verdade o que eu quero é isso:
January = Janeiro
September = Setembro
[/quote]
É exatamente o que minha dica faz.
O style Long escreverá o nome do mês sem aquela concatenação
O locale em português te dará o nome do mês traduzido.
[/quote]
Não, não dá. Não existe uma constante para classe Locale referente ao Brasil e nem à Portugal.
[quote=Andre Rosa][quote=AbelBueno][quote=Metaleiro]Na verdade o que eu quero é isso:
January = Janeiro
September = Setembro
[/quote]
É exatamente o que minha dica faz.
O style Long escreverá o nome do mês sem aquela concatenação
O locale em português te dará o nome do mês traduzido.
[/quote]
Não, não dá. Não existe uma constante para classe Locale referente ao Brasil e nem à Portugal.[/quote]
Fiz isso aqui :
[code]
import java.text.;
import java.util.;
public class MonthFormat {
public static void main(String args[]) throws ParseException {
String s;
// String s1;
// String s2;
// String s3;
Format formatter;
Date date = new Date();
DateFormat df = new SimpleDateFormat(“MMMM”);
Locale BRAZIL = new Locale(“pt”,“BR”);
df = DateFormat.getDateInstance(DateFormat.FULL, BRAZIL);
// formatter = new SimpleDateFormat(“MMMM”);
s = df.format(date); // January
//
// formatter = new SimpleDateFormat(“dd”);
// s1 = formatter.format(date);
//
// formatter = new SimpleDateFormat(“yyyy”);
// s2 = formatter.format(date);
//
// s3 = " de ";
System.out.println("Month : " + s);
}
}[/code]
A saída foi essa :
Sábado, 3 de Setembro de 2011
mas o que queria era isso :
3 de Setembro de 2011
Se alguém puder ajudar desde já agradeço!
Ae Tio, o código pronto e bem simples:
import java.text.*;
import java.util.*;
public class Mes {
public static void main(String args[])
{
String mes;
Date data = new Date();
DateFormat df = new SimpleDateFormat("MMMM");
mes = df.format(date);
System.out.println("Mês : " + mes);
}
}
Um outro exemplo com definição de localização:
[code]
/* Output
Month: September
Mês: Setembro
*/
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class Mes {
public static void main(String args[])
{
Date data = new Date();
Locale local = new Locale("us", "US");
DateFormat df = new SimpleDateFormat("MMMM", local);
System.out.println("Month: " + df.format(date));
local = new Locale("pt", "BR");
df = new SimpleDateFormat("MMMM", local);
System.out.println("Mês: " + df.format(data));
}
} [/code]
Primeiro obrigado a todos, criei esse código que corresponde a saída que preciso:
import java.text.*;
import java.util.*;
public class MonthFormat {
public static void main(String args[]) throws ParseException {
String s;
Date date = new Date();
DateFormat df = new SimpleDateFormat("");
Locale BRAZIL = new Locale("pt","BR");
df = DateFormat.getDateInstance(DateFormat.FULL, BRAZIL);
s = df.format(date);
String[] s3 = s.split(",");
System.out.println("Month : " + s3[1]);
}
A saída seria essa:
3 de Setembro de 2011 (Exatamente dessa forma)
sei que não é a melhor maneira, mas de qualquer forma está ai.
[quote=Andre Rosa]
Não, não dá. Não existe uma constante para classe Locale referente ao Brasil e nem à Portugal.[/quote]
O fato de não existir uma constante não indica que não exista um locale para português. Aliás, isso já foi mostrado que tem nas outras respostas.
Metaleiro, uma versão mais simples poderia ser:
Locale localeBR = new Locale("pt", "BR");
SimpleDateFormat fmt = new SimpleDateFormat("dd 'de' MMMM 'de' yyyy", localeBR);
System.out.println( fmt.format(new Date()) );
Daí não precisa daquele split.
[quote=AbelBueno][quote=Andre Rosa]
Não, não dá. Não existe uma constante para classe Locale referente ao Brasil e nem à Portugal.[/quote]
O fato de não existir uma constante não indica que não exista um locale para português. Aliás, isso já foi mostrado que tem nas outras respostas.
Metaleiro, uma versão mais simples poderia ser:
Locale localeBR = new Locale("pt", "BR");
SimpleDateFormat fmt = new SimpleDateFormat("dd 'de' MMMM 'de' yyyy", localeBR);
System.out.println( fmt.format(new Date()) );
Daí não precisa daquele split.[/quote]
Obrigado, ficou realmente bem mais simples, queria algo justamente assim 