在java中将LocalDate转换为GregorianCalendar

时间:2016-10-13 20:23:17

标签: java jodatime gregorian-calendar

我想将LocalDate转换为GregorianCalendar。请指教。 在我的应用程序中,我们使用GregorianCalendar来处理日期。但是当我调用其中一个web服务时,我得到了一个joda LocalDate作为返回类型。 现在我想将LocalDate转换为GregorianCalendar,因为它与月份值显示不同。请参阅下面的示例代码。 LocalDate显示10月份的10,而GregorianCalendar显示10月份的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

请建议如何将 org.joda.time.LocalDate转换为java.util.GregorianCalendar ,或者有更好的方法来解决这个问题。因为我无法修改使用GregorianCalendar的逻辑,所以我想改变使用joda LocalDate的逻辑将该月显示为GregorianCalendar(例如,10月份它显示9作为索引从0到11开始)。

2 个答案:

答案 0 :(得分:4)

尝试此示例将LocalDate转换为GregorianCalendar

LocalDate localDateObj = LocalDate.now();
            GregorianCalendar gc = GregorianCalendar.from(localDateObj.atStartOfDay(ZoneId.systemDefault()));

注意:gc.OCTOBER设置为9,但它表示Gregorian和Julian日历中一年中的第十个月。

希望这有帮助!

答案 1 :(得分:0)

您可以手动映射日期:

LocalDate date = LocalDate.now();
GregorianCalendar gc = new GregorianCalendar.Builder()
.setDate(date.getYear(), date.getMonthOfYear(), date.getDayOfMonth())
.build();