Joda Time - 将日历对象转换为本地日期



我有一个方法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 是一个不可变的日期时间类,表示没有 时区。

(我的强调)

相关内容

  • 没有找到相关文章

最新更新