1. ホーム
  2. java

[解決済み] 指定された文字列の日付における月の最終日の取得

2022-02-10 13:22:56

質問

入力した文字列の日付は以下の通りです。

String date = "1/13/2012";

以下のような月が表示されます。

SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date convertedDate = dateFormat.parse(date);
String month = new SimpleDateFormat("MM").format(convertedDate);

しかし、与えられたString dateで月の最後の暦日を取得するにはどうすればよいのでしょうか?

例: 文字列の場合 "1/13/2012" を出力する必要があります。 "1/31/2012" .

解決方法は?

Java 8 以上。

を使用することで convertedDate.getMonth().length(convertedDate.isLeapYear()) ここで convertedDate のインスタンスです。 LocalDate .

String date = "1/13/2012";
LocalDate convertedDate = LocalDate.parse(date, DateTimeFormatter.ofPattern("M/d/yyyy"));
convertedDate = convertedDate.withDayOfMonth(
                                convertedDate.getMonth().length(convertedDate.isLeapYear()));

Java 7以下。

を使用することで getActualMaximum のメソッドを使用します。 java.util.Calendar :

String date = "1/13/2012";
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date convertedDate = dateFormat.parse(date);
Calendar c = Calendar.getInstance();
c.setTime(convertedDate);
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));