2012-11-27 14 views
7

Mam metodę getCalendarFromClass, która zwraca mi obiekt o wartości Calendar.Joda Time - Konwersja obiektu kalendarza na LocalDate

Konwertuję go na LocalDate z Joda Time API przy użyciu metody fromCalendarFields.

LocalDate.fromCalendarFields(a.getCalendarFromClass()); 

Ale jak można określić TimeZone podczas wykonywania tej konwersji ponieważ nie znaleziono go w javadoc.

Javadoc dla fromCalendarFields metody wspomina:

Każde pole jest pytani z Kalendarza i przypisany do LOCALDATE. Jest to przydatne, jeśli używasz Kalendarza jako daty lokalnej, ignorując strefę.

Odpowiedz

7

Strefa czasowa Calendar ma być używana (przez Calendar), gdy czas Joda żąda różnych wartości pól. Joda Time po prostu używa calendar.get(Calendar.YEAR) itd.

Zwrócono LocalDate nie ma strefy czasowej, koncepcyjnie.

+0

db z którego otrzymuję kalendarz ma strefę czasową jako GMT, ale najpierw chcę przekonwertować go na EST, a następnie przetworzyć go – Abubakkar

+0

@Abu: Czy masz na myśli, że chcesz zabrać przechowywany * natychmiastowy * i przekonwertować go do EST (w którym zakładam, że masz na myśli EDT/EST w zależności od daty)? Jeśli tak, po prostu ustaw strefę czasową w 'Kalendarz' na odpowiednią strefę czasową przed konwersją na' LocalDate'. –

1

LocalDate nie wygląda jak klasa, którą chcesz. Z Doc:

LOCALDATE jest niezmienna klasy DateTime reprezentujący datę bez strefę czasową.

(podkreślenie moje)

9

1) Pobierz Strefa czasowa:

TimeZone tz = calendar.getTimeZone(); 

2) Utwórz Joda DateTime z kalendarza:

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

3) Get LOCALDATE

LocalDate localDate = dateTime.toLocalDate(); 
Powiązane problemy