Pergunta sobre android, java – Como posso obter o padrão de formato de data e hora padrão?

8

Alguém poderia me dizer como posso obter o padrão de formato de data e hora padrão (String) para localidade especificada (ou localidade padrão).

O que eu já encontrei (pode ser útil para outra pessoa):

Como obter a localidade padrão.

<code>Locale currentLocale= Locale.getDefault();
System.out.print(currentLocale.toString());

Result is "en_US"
</code>

Como obter o separador decimal

<code>DecimalFormatSymbols decimalFormatSymbols =
                                     new DecimalFormatSymbols(currentLocale);
System.out.print(decimalFormatSymbols.getDecimalSeparator());

Result is "."
</code>

Como obter o padrão de formato de data e hora padrão (String);

<code>(do something)
System.out.print(something);
And got at output something like this: "dd/mm/yyyy" or "hh:mm:ss".. 
                             or other values for specified locale.
</code>

Muito obrigado.

UPD: Solução encontrada:

<code>SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
String dateLocalizedFormatPattern = simpleDateFormat.toLocalizedPattern();

The result of System.out.print(dateLocalizedFormatPattern) 
                                             on my device is "M/d/yy h:mm a".
</code>
verifique minha resposta dada emstackoverflow.com/questions/10204291/… Khan

Sua resposta

2   a resposta
0

DateFormat classe. Confira agetDateInstance(int, Locale) método.

3

Atualizar

Como o russo Bear menciona em sua atualização para a questão, há umatoLocalizedPattern() método emSimpleDateFormat que retorna a string de formato.

Resposta original

SimpleDateFormatusa o seguinte código em seu construtor privado:

<code>...
ResourceBundle r = LocaleData.getDateFormatData(loc);
if (!isGregorianCalendar()) {
    try {
        dateTimePatterns = r.getStringArray(getCalendarName() + ".DateTimePatterns");
    } catch (MissingResourceException e) {
    }
}
if (dateTimePatterns == null) {
    dateTimePatterns = r.getStringArray("DateTimePatterns");
}
...
</code>

Assim, as cadeias de formato reais parecem estar em umResourceBundleacessado viaLocaleData.getDateFormatData()método.

Infelizmente, oLocaleDataclasse é uma parte do internosun.util.resources pacote.

E se eu quiser imprimir a parte da data, digamosM/d/yy sem a parte do tempo, como na saída da amostra:h:mm a? Gelin Luo
Johan, muito obrigado! Russian Bear
Sua resposta me levou a isso :-) Russian Bear
Eu acho que você poderia fazerdateLocalizedFormatPattern.split(" ")[0], mas isso só funcionará se o formato separar a data e a parte do tempo com um espaço. Não sei se existe uma maneira genérica de obter apenas a parte da data a partir de um formato de data. Johan Kaving
Mas eu vejo que você encontrou a solução real que eu perdi no SimpleDateFormat :-) Johan Kaving

Perguntas relacionadas