8

我有一个方法getCalendarFromClass可以返回一个Calendar.

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

LocalDate.fromCalendarFields(a.getCalendarFromClass());

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

方法的 javadocfromCalendarFields提到:

每个字段都从日历中查询并分配给 LocalDate。如果您一直使用日历作为本地日期,而忽略区域,这将非常有用。

4

3 回答 3

11

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();
于 2012-11-27T13:56:26.870 回答
7

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

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

于 2012-11-27T13:42:41.377 回答
1

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

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

(我的重点)

于 2012-11-27T13:43:10.370 回答