我想将LocalDate
转换为GregorianCalendar
。请建议。
在我的应用程序中,我们使用GregorianCalendar
来处理日期。但是当我调用其中一个web服务时,我得到了一个Joda LocalDate
作为返回类型。现在我想将LocalDate
转换为GregorianCalendar
,因为它与月份值显示不同。请参阅下面的示例代码。
LocalDate
显示10月份,而GregorianCalendar
显示9月份,因为它从索引0开始。请建议如何将LocalDate
转换为GregorianCalendar
,我试图看到API方法,但没有运气。
import java.util.GregorianCalendar;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
// Sample code below
LocalDate localDateObj = new LocalDate();
System.out.println("Month value using LocalDate :" + localDateObj.getMonthOfYear());
System.out.println("Date using LocalDate : " + localDateObj);
// Converting LocalDate to DateTime
DateTime dateTimeObj = localDateObj.toDateTimeAtStartOfDay();
System.out.println("DateTime month " + dateTimeObj.getMonthOfYear());
System.out.println("Date using DateTime : " + dateTimeObj);
// GregorianCalendar
GregorianCalendar gc = new GregorianCalendar();
System.out.println("Month value using GregorianCalendar:" + gc.OCTOBER);
System.out.println("GC :" + gc.getTime());
输出:Month value using LocalDate :10 Date using LocalDate : 2016-10-13 DateTime month 10 Date using DateTime : 2016-10-13T00:00:00.000-04:00 Month value using GregorianCalendar:9 GC :Thu Oct 13 16:14:43 EDT 2016
尝试将LocalDate
转换为GregorianCalendar
LocalDate localDateObj = LocalDate.now();
GregorianCalendar gc = GregorianCalendar.from(localDateObj.atStartOfDay(ZoneId.systemDefault()));
注意:gc.OCTOBER
被设置为9,但它表示在公历和儒略历中一年的第10个月。
希望这有帮助!
可以手动映射日期:
LocalDate date = LocalDate.now();
GregorianCalendar gc = new GregorianCalendar.Builder()
.setDate(date.getYear(), date.getMonthOfYear(), date.getDayOfMonth())
.build();