2012-11-27 45 views
7

我有一个方法getCalendarFromClass返回我的Calendar的对象。乔达时间 - 转换日历对​​象LOCALDATE的

,我使用fromCalendarFields方法将其转换成约达时间的API LocalDate

LocalDate.fromCalendarFields(a.getCalendarFromClass()); 

但是因为我没有发现它在javadoc中执行此转换的时候怎么可以指定TimeZone

fromCalendarFields方法的Javadoc提到:

每个字段从日历查询和指派给LOCALDATE。如果您已将日历用作本地日期,则忽略该区域很有用。

回答

7

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

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

+0

我从哪里接收日历的数据库有GMT时区,但我首先我想将其转换为EST,然后处理它 – Abubakkar

+0

@Abu:你的意思是你想要存储*即时*并将其转换为EST (我认为你的意思是美国东部时间/东部时间取决于日期)?如果是这样,只需将“日历”中的时区设置为正确的时区,然后再转换为“LocalDate”。 –

1

LocalDate看起来不像您想要的类。从DOC:

是LOCALDATE表示日期一个不变的DateTime类不 一个时区。

(我的重点)

9

1)获取时区:

TimeZone tz = calendar.getTimeZone(); 

2)从日历中创建一个乔达日期时间:

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

3)获取LOCALDATE的

LocalDate localDate = dateTime.toLocalDate();