Java 月の最終日を文字列型で取得する方法 - Calendarクラス ホームページ制作 | 墨田区

Java 月の最終日を文字列型で取得する方法 – Calendarクラス

LINEで送る
Pocket

Java で、月の最終日を文字列型で取得する方法をご紹介します。
月の最終日というのは、毎月変わりますよね。そう、30日で終わったり、31日で終わったりします。
2月にいたっては、28日だったり、うるう年の場合 29日だったりします。

実務の中では、この最終日を意識して業務をすることが多々ありますので、
取得する方法をしっかり覚えておきましょう。

それでは、サンプルソースを見ながら解説していきます。




【PR】マジか?!「アレ」してるLINEスタンプっていったい・・・


サンプルソース

/**
 * 今月の最終日を文字列で返します。
 *
 * @return 日文字列(30,31など)
 */
public static String getLastDayOfThisMonth() {
    Calendar calendar = GregorianCalendar.getInstance();
    calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1, 0);
    int lastDayOfThisMonth = calendar.get(Calendar.DATE);
    return String.valueOf(lastDayOfThisMonth);
}

まず、日時の操作をおこなうときは、GregorianCalendar クラスを使います。
この GregorianCalendar クラスは、Calendar クラスを継承していますので、
用意されている settergetter を利用することで、年月時分秒を設定・取得が可能です。
あとは、取得できた日にちを文字列型にキャストしてあげればおしまいです。

calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1, 0);
この月加算している部分を変更してあげれば、先月や翌月の最終日の取得も可能です。

サンプルは以下のようになります。
/**
 * 先月の最終日を文字列で返します。
 *
 * @return 日文字列(30,31など)
 */
public static String getLastDayOfBeforeMonth() {
    Calendar calendar = GregorianCalendar.getInstance();
    calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), 0);
    int lastDayOfBeforeMonth = calendar.get(Calendar.DATE);
    return  String.valueOf(lastDayOfBeforeMonth);
}
/**
 * 来月の最終日を文字列で返します。
 *
 * @return 日文字列(30,31など)
 */
public static String getLastDayOfAfterMonth() {
    Calendar calendar = GregorianCalendar.getInstance();
    calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 2, 0);
    int lastDayOfAfterMonth = calendar.get(Calendar.DATE);
    return String.valueOf(lastDayOfAfterMonth);
}

テスト

ここでは、CalendarUtils というユーティリティクラスに static メソッドとして記述しています。
こうすることで、いちいち同じことを記述する必要がなく、ソースを美しく保つことができます。

それでは、早速テストしてみましょう。
System.out.println(CalendarUtils.getLastDayOfThisMonth());      // 今月
System.out.println(CalendarUtils.getLastDayOfBeforeMonth());    // 先月
System.out.println(CalendarUtils.getLastDayOfAfterMonth());     // 来月

テスト結果

31  // 今月
31  // 先月
28  // 来月
今日は、1月30日でしたので、今月は 31 日まで。先月 12 月も 31日まで。
そして、来月 2 月は、28 日までという結果になりました。

これらの日付操作は、実務では本当によく利用しますので、十分に理解しておくことをおすすめします。

おつかれさまでした。

LINEで送る
Pocket

この記事がお役に立ちましたら シェア をお願いいたします。

コメント - Thank you for the comment.

  1.  

    これだとだめですよ。
    カレンダー取得後、calendar .clear();を入れないと、29日に実行したときに2月の月末が2/31となります。

    返信

     
    •  

      コメントありがとうございます。全てのフィールドを未定義にするclearメソッドですね。今回のケースでは必要ないと思いますがいかがでしょうか?今日はちょうど2/29ですが上記ソースを実行したところ29という値が返ってきました。実行環境はJava7で、実行メソッドはgetLastDayOfThisMonthです。

      返信

       

コメントを残す

コメント(必須)

お名前 (必須)
メールアドレス
(アドレスは公開されません)

Trackback URL