Java Joda Time-将日历对象转换为LocalDate

Java Joda Time-将日历对象转换为LocalDate,java,datetime,timezone,jodatime,Java,Datetime,Timezone,Jodatime,我有一个方法getCalendarFromClass,它返回我一个Calendar的对象 我正在使用fromCalendarFields方法将其转换为Joda Time API的LocalDate LocalDate.fromCalendarFields(a.getCalendarFromClass()); 但是在执行此转换时,如何指定时区,因为我在javadoc中没有找到它 javadoc forfromCalendarFields方法提到: 从日历中查询每个字段并将其分配给LocalDat

我有一个方法
getCalendarFromClass
,它返回我一个
Calendar
的对象

我正在使用
fromCalendarFields
方法将其转换为Joda Time API的
LocalDate

LocalDate.fromCalendarFields(a.getCalendarFromClass());
但是在执行此转换时,如何指定
时区
,因为我在javadoc中没有找到它

javadoc for
fromCalendarFields
方法提到:


从日历中查询每个字段并将其分配给LocalDate。如果您一直将日历用作本地日期,而忽略了区域,则此选项非常有用。

日历有一个时区,当Joda time请求不同的字段值时,(由
日历使用)。Joda Time只使用了
calendar.get(calendar.YEAR)


从概念上讲,返回的
LocalDate
没有时区。

LocalDate看起来不像您想要的类。从文档:

LocalDate是一个不可变的datetime类,表示不带日期的日期 时区

(我的重点)

1)获取时区:

TimeZone tz = calendar.getTimeZone();
2) 从日历创建Joda DateTime:

DateTimeZone jodaTz = DateTimeZone.forID(tz.getID());
DateTime dateTime = new DateTime(calendar.getTimeInMillis(), jodaTz);
3) 获取本地日期

LocalDate localDate = dateTime.toLocalDate();

我接收日历的数据库的时区为GMT,但我首先要将其转换为EST,然后再进行处理it@Abu:您的意思是要将存储的瞬间转换为EST(我假设您指的是EDT/EST,具体取决于日期)?如果是这样,只需将
日历上的时区设置为正确的时区,然后再转换为
LocalDate