Как удалить поле 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.