Posso alterar DateFormat.SHORT para incluir segundos ou algo semelhante?
-
12-09-2019 - |
Pergunta
Na minha aplicação eu estou usando código como este:
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale);
df.setTimeZone(User.getTimeZone());
String s = df.format(d);
para formatar datas em um aplicativo que é usado em diferentes localidades. Eu gostaria de, por vezes, adicionar segundos para isso, mas eu não quero apenas especificar um formato específico usando o SimpleDateFormat como eu perderia o poder do local com base formatação.
Então, alguém tem alguma idéia como fazer uma pequena alteração para a data formatada de localidade?
Cheers,
Chris
Solução
A única solução simples e direta que tenho encontrado é usando FieldPosition:
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale);
df.setTimeZone(User.getTimeZone());
StringBuffer sb = new StringBuffer();
FieldPosition fp = new FieldPosition(DateFormat.MINUTE_FIELD);
sb = df.format(d, sb, fp);
sb.insert( fp.getEndIndex(), new SimpleDateFormat(":ss").format(d) );
String s = sb.toString();
Este é encontrar a posição do campo minutos na seqüência, em seguida, permitindo-me para adicionar os segundos logo após isso. Os problemas só reais eu posso ver com isso, além de ser um pouco feio, é que ":" pode não ser o separador correto e ele já pode ter segundos na mesma. Então, alguém pode ver uma resposta melhor?