Joda Time - 将Calendar对象转换为LocalDate

时间:2012-11-27 13:40:07

标签: java datetime timezone jodatime

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

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

LocalDate.fromCalendarFields(a.getCalendarFromClass());

但是在执行此转换时如何指定TimeZone,因为我没有在javadoc中找到它。

fromCalendarFields方法的javadoc提到:

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

3 个答案:

答案 0 :(得分:9)

1)获取时区:

TimeZone tz = calendar.getTimeZone();

2)从日历创建一个Joda DateTime:

DateTimeZone jodaTz = DateTimeZone.forID(tz.getID());
DateTime dateTime = new DateTime(calendar.getTimeInMillis(), jodaTz);

3)获取LocalDate

LocalDate localDate = dateTime.toLocalDate();

答案 1 :(得分:7)

Calendar有一个时区,当Joda Time请求不同的字段值时,将使用(Calendar)。 Joda Time只使用calendar.get(Calendar.YEAR)等。

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

答案 2 :(得分:1)

LocalDate看起来不像您想要的课程。来自doc:

  

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

(我的重点)