我有一个方法getCalendarFromClass
,它返回Calendar
的对象。
我正在使用LocalDate
方法将其转换为Joda Time API的fromCalendarFields
。
LocalDate.fromCalendarFields(a.getCalendarFromClass());
但是在执行此转换时如何指定TimeZone
,因为我没有在javadoc中找到它。
fromCalendarFields
方法的javadoc提到:
从日历中查询每个字段并将其分配给LocalDate。如果您一直将日历用作本地日期,忽略该区域,则此功能非常有用。
答案 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是一个不可变的日期时间类,表示日期,不带 一个时区。
(我的重点)