String
を介して次の形式で受け取るタイムスタンプがあります。
2016-10-17T12:42:04.000
次の行を使用して、それをLocalDateTime
に変換し、それに数日を追加します(その後、String
に戻します)。
String _120daysLater = LocalDateTime.parse("2016-10-17T12:42:04.000",
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS")).minusDays(120).toString());
ただし、返される応答が.000
ミリ秒低下することに気付きました。
正確なパターンを確実に保持するための最もクリーンな方法がわかりません。今のところ、1ミリ秒を追加しているだけで、おそらく古いSimpleDateFormat
を組み込む方法がありますが、さらに良い方法があることを望んでいました。
LocalDateTime :: toString ゼロの場合、パーツを省略します:
使用される形式は、省略された部分がゼロであると暗示される時間の完全な値を出力する最短のものになります。
toString()
に依存する代わりに、 LocalDateTime :: format を使用します。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS");
LocalDateTime _120daysLater = LocalDateTime.parse("2016-10-17T12:42:04.000", formatter).minusDays(120);
// This just uses default formatting logic in toString. Don't rely on it if you want a specific format.
System.out.println(_120daysLater.toString());
// Use a format to use an explicitly defined output format
System.out.println(_120daysLater.format(formatter));