Как удалить миллисекунды из локального времени в java 8
использование java.Time framework, я хочу печатать время в формате hh:mm:ss
, а LocalTime.now()
дает время в формате hh:mm:ss,nnn
. Я пытался использовать DateTimeFormatter
:
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_TIME;
LocalTime time = LocalTime.now();
String f = formatter.format(time);
System.out.println(f);
результат:
22:53:51.894
как я могу удалить миллисекунды от времени?
6 ответов
просто создать DateTimeFormatter
конкретно:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss", Locale.US);
LocalTime time = LocalTime.now();
String f = formatter.format(time);
System.out.println(f);
(Я предпочитаю явно использовать языковой стандарт США, чтобы дать понять, что я не хотите что-нибудь из локали формата по умолчанию.)
Edit: я должен добавить, что это наносекунды, а не миллисекунды.
Я чувствую, что эти ответы на самом деле не отвечают на вопрос, используя API даты и времени Java 8 SE, как предполагалось. Я считаю, что метод truncatedTo является решением здесь.
LocalDateTime now = LocalDateTime.now();
System.out.println("Pre-Truncate: " + now);
DateTimeFormatter dtf = DateTimeFormatter.ISO_DATE_TIME;
System.out.println("Post-Truncate: " + now.truncatedTo(ChronoUnit.SECONDS).format(dtf));
выход:
Pre-Truncate: 2015-10-07T16:40:58.349
Post-Truncate: 2015-10-07T16:40:58
альтернативно, при использовании часовых поясов:
LocalDateTime now = LocalDateTime.now();
ZonedDateTime zoned = now.atZone(ZoneId.of("America/Denver"));
System.out.println("Pre-Truncate: " + zoned);
DateTimeFormatter dtf = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
System.out.println("Post-Truncate: " + zoned.truncatedTo(ChronoUnit.SECONDS).format(dtf));
выход:
Pre-Truncate: 2015-10-07T16:38:53.900-06:00[America/Denver]
Post-Truncate: 2015-10-07T16:38:53-06:00
сократить до минут:
localTime.truncatedTo(ChronoUnit.MINUTES);
вырезать секунд:
localTime.truncatedTo(ChronoUnit.SECONDS);
пример:
LocalTime.now().truncatedTo(ChronoUnit.SECONDS).format(DateTimeFormatter.ISO_LOCAL_TIME)
выходы 15:07:25
используйте это в первой строке
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
попробуйте использовать шаблоны, определенные здесь: http://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html
например:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy MM dd HH. mm. ss");
String text = date.toString(formatter);
вы можете это сделать, просто используя регулярное выражение в строке:
String f = formatter.format(time).replaceAll("\.[^.]*", "");
это удаляет (заменяя пустым) последнюю точку и все после.