Как удалить поле SECONDS из DateFormat

Я хочу напечатать время без секунд в формате по умолчанию для локали. Так что я получаю форматер с getTimeInstance() или же getTimeInstance(int style), Но даже когда я использую SHORT стиль, он будет также содержать секунды времени.

Есть ли способ (кроме создания моего собственного формата, который тогда не будет языковым стандартом по умолчанию и поддерживается вручную), я могу взять значение по умолчанию и разделить секунды?

Спасибо

Римский

3 ответа

Решение

DateFormat.getTimeInstance (DateFormat.SHORT) отлично работает здесь: с 20:00:00 до 20:00 и с 20:00:00 до 20:00.

РЕДАКТИРОВАТЬ: этого недостаточно (как указано в первом комментарии ниже). Я держу это здесь ради истории и чтобы другие не отвечали подобным образом:)


Рассматривали ли вы сохранение текущего формата в виде строки и ручное удаление секунд, используя метод подстроки String?

В случае, если кто-то читает это и использует Java 8 или более позднюю версию или хорошо работает с (хорошей и устойчивой к будущим) внешней библиотекой:

    DateTimeFormatter noSeconds = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT)
            .withLocale(Locale.ITALY);
    LocalTime time = LocalTime.now(ZoneId.systemDefault());
    System.out.println(time.format(noSeconds));

Это просто напечатано:

15.26

Пожалуйста, укажите желаемый язык вместо Locale.ITALY, использование Locale.getDefault() для настройки языка вашей JVM. Я считаю, что он печатает без секунд во всех регионах.

В коде я использовал LocalTime объект, но тот же код работает для многих других классов даты и времени, включая LocalDateTime, OffsetDateTime, OffsetTime а также ZonedDateTime,

Использовать DateTimeFormatter и любой из других классов, упомянутых в Android, вам нужен ThreeTenABP. Подробнее о том, как в этом вопросе: Как использовать ThreeTenABP в Android Project. Для любой не Android Android 6 или 7 используйте ThreeTen Backport.

Другие вопросы по тегам