我有一个方法getCalendarFromClass
,它向我返回一个Calendar
的对象。
我正在使用fromCalendarFields
方法将其转换为Joda Time API的LocalDate
。
LocalDate.fromCalendarFields(a.getCalendarFromClass());
但是在执行此转换时如何指定TimeZone
,因为我在javadoc中没有找到它。
javadoc for fromCalendarFields
方法提到:
每个字段都从日历中查询并分配给本地日期。如果您一直使用日历作为本地日期,忽略该区域,这将非常有用。
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();
Calendar
有一个时区,当Joda Time请求不同的字段值时,将(由Calendar
)使用该时区。乔达时间只使用calendar.get(Calendar.YEAR)
等。
概念上讲,返回的LocalDate
没有时区。
LocalDate 看起来不像您想要的类。从文档中:
LocalDate 是一个不可变的日期时间类,表示没有 时区。
(我的强调)