Java.timeフレームワークを使用して、時刻を_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
_
時間からミリ秒を削除するにはどうすればよいですか?
DateTimeFormatter
を明示的に作成するだけです:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss", Locale.US);
LocalTime time = LocalTime.now();
String f = formatter.format(time);
System.out.println(f);
(私は明示的に米国のロケールを使用することを好んでいます-私がしないでくださいデフォルトの形式のロケールからの何かを望んでいることを明確にするためです。)
編集:これらはミリ秒ではなくナノ秒であることを付け加えます。
これらの答えは、Java 8 SE Date and Time APIを意図したとおりに使用して質問に答えることはできないと思います。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("\\.[^.]*", "");
これにより、最後のドットとその後のすべてが(空白に置き換えられて)削除されます。