org.joda.time.LocalDate オブジェクトを java.util.GregorianCalendar に変換したいと考えています。java.util.GregorianCalendar の月は、インデックス 0 から 11 で表示されます。つまり、10 月は 9 桁、11 月は 10 桁で表されます....LocalDate では、10 月は 10 桁で表され、11 月は 11 で表されます....
GregorianCalendar を使用している既存のアプリケーションに取り組んでいます。ここで、メソッド呼び出しで受け取った LocalDate 値を GregorianCalendar 形式に変換して、月の値が一致するようにします。
すでに多くのブログを検索しましたが、値を変換できませんでした。以下は私が試したコードですが、それでも日付形式を GregorianCalendar 形式に変更できませんでした。
ジャバコード:
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
class Convert{
public static String format(GregorianCalendar calendar){
SimpleDateFormat fmt = new SimpleDateFormat("dd-M-yyyy");
fmt.setCalendar(calendar);
String dateFormatted = fmt.format(calendar.getTime());
System.out.println("--date formatted--- " + dateFormatted);
return dateFormatted;
}
void convertLocalDateToGregorianCalendar(){
LocalDate localDate = new LocalDate();
DateTime dateTimeObj = localDate.toDateTimeAtStartOfDay();
GregorianCalendar gc = new GregorianCalendar();
gc.setTimeInMillis(dateTimeObj.getMillis());
String formattedGCDate = format(gc);
System.out.println("converted LocalDate to GregorianDate date value " + formattedGCDate);
}
public static void main(String[] args) {
new Convert().convertLocalDateToGregorianCalendar();
} }
出力:
--date formatted--- 13-10-2016
converted LocalDate to GregorianDate date value 13-10-2016
出力で期待される日付値: 13-9-2016 (GregorianCalendar の場合、10 月は数字 9 で表されます)。
PS: java5 は私が使用しているバージョンです。