Java で指定の文字列を日時に変換するには、DateFormat クラスまたは SimpleDateFormat クラスの parse メソッドを使用します。
DateFormatクラスを使って変換する
DateFormat クラスを使って変換する場合は、getDateInstance で Date オブジェクトを生成する際の parse メソッドに変換したい文字列を指定することで文字列を日付データに変換します。ただし、このメソッドで有効な日付フォーマットは「yyyy/MM/dd」のみになります。それ以外の形式、例えば「yyyy-MM-dd」といった文字列を渡した場合、文字列は日付フォーマットとは認識されず、ParseException が発生します。
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
public class sample1 {
public static void main (String[] args) {
try {
Date date = toDate("2014/01/02");
System.out.println(date.toString());
} catch (ParseException e) {
System.out.println(e);
}
}
public static Date toDate(String str) throws ParseException {
Date date = DateFormat.getDateInstance().parse(str);
return date;
}
}
SimpleDateFormatクラスを使って変換する
SimpleDateFormat クラスを使って変換する場合は、まず SimpleDateFormat オブジェクトを生成する際に任意のフォーマットを指定し、生成したオブジェクトの parse メソッドに文字列を指定することで、文字列を日付データに変換します。この方法の場合は、日付フォーマットを指定できるので、より汎用性の高いプログラムを作成することができますが、DateFormat クラスのparse メソッド同様、日付に変換できない文字列を指定した場合は、ParseException が発生します。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class sample2 {
public static void main (String[] args) {
try {
Date date = toDate("2014-01-02", "yyyy-MM-dd");
System.out.println(date.toString());
} catch (ParseException e) {
System.out.println(e);
}
}
public static Date toDate(String str, String format) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date date = sdf.parse(str);
return date;
}
}