java.util.Calendar#get は汎用的に設計されたメソッドなんだろうけど、おかげでフィールド値を取得するためのキーとなる定数がたくさんあって、どのキー定数が年・月・日かおぼえていられない。

なので、キー定数の備忘録を兼ねて、年・月・日・曜日を簡単に取得できるクラスを書いてみた。曜日は日本語名(日・月・火・水・木・金・土)で取得できるようにしてある。

まぁ、ようするに単なるラッパークラス。


import java.util.Calendar;
 
public class CalendarWrapper {
 
  public static void main(String[] args) {
    System.out.println("[現在日時]");
    System.out.println(new CalendarWrapper(Calendar.getInstance()));
  }
  
  private final Calendar cal;
  
  public CalendarWrapper(Calendar cal){
    this.cal = cal;
  }
  
  public int getYear(){
    return cal.get(Calendar.YEAR);
  }
  
  public int getMonth(){
    // getMonth の値は1月が0なので+1する
    // Calendar.JANUARY = 0, Calendar.FEBRUARY = 1, ...
    return cal.get(Calendar.MONTH) + 1;
  }
  
  public int getDay(){
    return cal.get(Calendar.DATE);
  }
  
  public Week getWeek(){
    return new Week(cal);
  }
  
  public String toString(){
    return getYear() + "年" + getMonth() + "月" + getDay() + "日(" + getWeek().getJpName() + ")";
  }
  
  public static class Week{
    
    private final int week;
    
    public Week(Calendar cal){
      week = cal.get(Calendar.DAY_OF_WEEK);
    }
    
    public String getJpName(){
      switch(week){
        case Calendar.SUNDAY: return "日";
        case Calendar.MONDAY: return "月";
        case Calendar.TUESDAY: return "火";
        case Calendar.WEDNESDAY: return "水";
        case Calendar.THURSDAY: return "木";
        case Calendar.FRIDAY: return "金";
        case Calendar.SATURDAY: return "土";
        default: throw new IllegalStateException("The value of week is " + week);
      }
    }
    
    public String toString(){
      try{
        return getJpName();
      }catch(Exception e){
        return "";
      }
    }
  }
}

ref. Calendar (Java Platform SE 8 )

tags: java

Posted by NI-Lab. (@nilab)