Calendar を Date に変換するには、 Calendar#getTime() を使う。

Date を Calendar に変換するには、 Calendar#setTime(Date) を使う。

変換処理をクラスにまとめてみた。


import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
 
/**
 * Date と Calendar オブジェクトの変換を行います。
 * @see <a href="http://docs.oracle.com/javase/jp/8/api/java/util/Calendar.html">Calendar (Java Platform SE 8 )</a>
 * @see <a href="http://docs.oracle.com/javase/jp/8/api/java/util/Date.html">Date (Java Platform SE 8 )</a>
 */
public class DateCalendarConverter {
 
  /**
   * 指定した Calendar オブジェクトの時間値(元期からのミリ秒単位のオフセット)を表す Date オブジェクトを取得します。
   * @param cal Calendar オブジェクト
   * @return 時間値を表す Date オブジェクト
   */
  public static Date toDate(Calendar cal) {
    return cal.getTime();
  }
 
  /**
   * デフォルトのタイムゾーンおよびロケールを使用した Calendar オブジェクトを取得します。
   * @param date 時間値を表す Date オブジェクト
   * @return Calendar オブジェクト
   */
  public static Calendar toCalendar(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    return cal;
  }
 
  /**
   * 指定されたタイムゾーンおよびデフォルトのロケールを使用した Calendar オブジェクトを取得します。
   * @param date 時間値を表す Date オブジェクト
   * @param zone 使用するタイムゾーン
   * @return Calendar オブジェクト
   */
  public static Calendar toCalendar(Date date, TimeZone zone) {
    Calendar cal = Calendar.getInstance(zone);
    cal.setTime(date);
    return cal;
  }
 
  /**
   * デフォルトのタイムゾーンおよび指定されたロケールを使用した Calendar オブジェクトを取得します。
   * @param date 時間値を表す Date オブジェクト
   * @param aLocale 週のデータに使用するロケール
   * @return Calendar オブジェクト
   */
  public static Calendar toCalendar(Date date, Locale aLocale) {
    Calendar cal = Calendar.getInstance(aLocale);
    cal.setTime(date);
    return cal;
  }
 
  /**
   * 指定されたタイムゾーンおよびロケールを使用した Calendar オブジェクトを取得します。
   * @param date 時間値を表す Date オブジェクト
   * @param zone 使用するタイムゾーン
   * @param aLocale 週のデータに使用するロケール
   * @return Calendar オブジェクト
   */
  public static Calendar toCalendar(Date date, TimeZone zone, Locale aLocale) {
    Calendar cal = Calendar.getInstance(zone, aLocale);
    cal.setTime(date);
    return cal;
  }
}

サンプルコード。


import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
 
public class Sample {
 
  public static void main(String[] args){
 
    // Calendar を Date へ変換
    {
      System.out.println("Calendar を Date へ変換");
      Calendar cal = Calendar.getInstance();
      Date date = DateCalendarConverter.toDate(cal);
      System.out.println("Calendar: " + cal);
      System.out.println("Date: " + date);
      System.out.println("Calendar#getTimeInMillis: " + cal.getTimeInMillis());
      System.out.println("Date#getTime: " + date.getTime());
      System.out.println();
    }
 
    // Date を Calendar へ変換
    {
      System.out.println("Date を Calendar へ変換");
      Date date = new Date();
      Calendar cal = DateCalendarConverter.toCalendar(date);
      System.out.println("Date: " + date);
      System.out.println("Calendar: " + cal);
      System.out.println("Date#getTime: " + date.getTime());
      System.out.println("Calendar#getTimeInMillis: " + cal.getTimeInMillis());
      System.out.println();
    }
    
    // Date を Calendar へ変換 (タイムゾーンを指定)
    {
      System.out.println("Date を Calendar へ変換 (タイムゾーンを指定)");
      Date date = new Date();
      TimeZone zone = TimeZone.getTimeZone("JST");
      Calendar cal = DateCalendarConverter.toCalendar(date, zone);
      System.out.println("Date: " + date);
      System.out.println("Calendar: " + cal);
      System.out.println("Date#getTime: " + date.getTime());
      System.out.println("Calendar#getTimeInMillis: " + cal.getTimeInMillis());
      System.out.println();
    }
 
    // Date を Calendar へ変換 (ロケールを指定)
    {
      System.out.println("Date を Calendar へ変換 (ロケールを指定)");
      Date date = new Date();
      Locale locale = new Locale("ja", "JP");
      Calendar cal = DateCalendarConverter.toCalendar(date, locale);
      System.out.println("Date: " + date);
      System.out.println("Calendar: " + cal);
      System.out.println("Date#getTime: " + date.getTime());
      System.out.println("Calendar#getTimeInMillis: " + cal.getTimeInMillis());
      System.out.println();
    }
 
    // Date を Calendar へ変換 (タイムゾーンとロケールを指定)
    {
      System.out.println("Date を Calendar へ変換 (タイムゾーンとロケールを指定)");
      Date date = new Date();
      TimeZone zone = TimeZone.getDefault();
      Locale locale = Locale.getDefault();
      Calendar cal = DateCalendarConverter.toCalendar(date, zone, locale);
      System.out.println("Date: " + date);
      System.out.println("Calendar: " + cal);
      System.out.println("Date#getTime: " + date.getTime());
      System.out.println("Calendar#getTimeInMillis: " + cal.getTimeInMillis());
      System.out.println();
    }
  }
}

tags: java

Posted by NI-Lab. (@nilab)