Могу ли я изменить DateFormat.SHORT, чтобы включить секунды или что-то подобное?

StackOverflow https://stackoverflow.com/questions/1846059

  •  12-09-2019
  •  | 
  •  

Вопрос

В своем приложении я использую такой код:

DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale);
df.setTimeZone(User.getTimeZone());
String s = df.format(d);

для форматирования дат в приложении, которое используется в разных локалях.Иногда мне хотелось бы добавить к этому секунды, но я не хочу просто указывать один конкретный формат с помощью SimpleDateFormat, поскольку я потеряю возможности форматирования на основе локали.

Итак, у кого-нибудь есть идеи, как внести незначительные изменения в дату в языковом формате?

Ваше здоровье,

Крис

Это было полезно?

Решение

Единственное прямое решение, которое я нашел, — это использование 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();

Это позволяет найти положение поля минут в строке, а затем добавить секунды сразу после него.Единственная реальная проблема, которую я вижу в этом, помимо того, что это немного некрасиво, заключается в том, что «:» может быть неправильным разделителем и в нем уже могут быть секунды.Так может ли кто-нибудь увидеть лучший ответ?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top