Eu estou fornecendo a resposta moderna.
java.time e ThreeTenABP
Para obter a data atual:
LocalDate today = LocalDate.now(ZoneId.of("America/Hermosillo"));
Isso fornece um LocalDate
objeto, que é o que você deve usar para manter uma data em seu programa. A LocalDate
é uma data sem hora do dia.
Somente quando você precisar exibir a data para um usuário, formate-a em uma sequência adequada para a localidade do usuário:
DateTimeFormatter userFormatter
= DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG);
System.out.println(today.format(userFormatter));
Quando executei esse trecho hoje no código de idioma inglês dos EUA, a saída era:
13 de julho de 2019
Se você quiser mais curto, especifique FormatStyle.MEDIUM
ou mesmo FormatStyle.SHORT
. DateTimeFormatter.ofLocalizedDate
usa o código de idioma de formatação padrão, portanto, o ponto é que ele fornecerá uma saída adequada para esse código de idioma, diferente para códigos de idioma diferentes.
Se seu usuário tiver requisitos muito especiais para o formato de saída, use uma sequência de padrão de formato:
DateTimeFormatter userFormatter = DateTimeFormatter.ofPattern(
"d-MMM-u", Locale.forLanguageTag("ar-AE"));
13-junho -2019
Estou usando e recomendando java.time, a moderna API de data e hora de Java. DateFormat
, SimpleDateFormat
, Date
E Calendar
usado na pergunta e / ou muitas das outras respostas, são mal concebidos e longo desatualizado. E o java.time é muito mais agradável de se trabalhar.
Pergunta: Posso usar o java.time no Android?
Sim, o java.time funciona bem em dispositivos Android mais antigos e mais recentes. Requer apenas pelo menos Java 6 .
- No Java 8 e posterior e em dispositivos Android mais recentes (do nível 26 da API), a API moderna é incorporada.
- No Java 6 e 7, obtenha o ThreeTen Backport, o backport das classes modernas (ThreeTen para JSR 310; veja os links na parte inferior).
- No Android (mais antigo), use a edição Android do ThreeTen Backport. Chama-se ThreeTenABP. E certifique-se de importar as classes de data e hora
org.threeten.bp
com subpacotes.
Ligações
DateFormat
classe era bom quando essa pergunta foi feita em 2011, essa classe e sua subclasseSimpleDateFormat
sempre foram problemáticas e agora estão desatualizadas há muito tempo. Eu recomendo que você não os use e, em vez disso, procure java.time, a moderna API de data e hora de Java .