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)