2012-11-27 16 views
7

numaralı bir yöntem var ve bana Calendar nesnesini döndürüyor.Joda Time - Takvim nesnesini LocalDate'e dönüştürme

Ve fromCalendarFields yöntemini kullanarak Joda Time API LocalDate içine dönüştürüyorum.

LocalDate.fromCalendarFields(a.getCalendarFromClass()); 

Ama javadoc buldum vermedi olarak bu dönüşümü gerçekleştirirken TimeZone belirtebilirsiniz nasıl.

fromCalendarFields yöntemi için javadoc bahseder:

her alan Takvim sorgulanan ve LOCALDATE atanır. Bu, takvimi yerel bir tarih olarak kullandıysanız, bölgeyi göz ardı ederseniz yararlıdır. Calendar

cevap

7

bir zaman dilimine sahiptir ve Joda zaman farklı alan değerleri istediğinde ki (Calendar) tarafından kullanılır. Joda Zaman sadece calendar.get(Calendar.YEAR) vs. kullanır.

Dönen LocalDate, kavramsal olarak bir zaman dilimine sahip değildir.

+0

takvim aldığım yerden db GMT olarak saat dilimi vardır, ancak ilk önce bunu EST'ye dönüştürmek ve sonra işleyin – Abubakkar

+0

@Abu: Depolanan * anı * almak istediğinizi ve EST'ye dönüştürmek istediğiniz anlamına mı geliyor? (tarihe bağlı olarak EDT/EST'yi kastettiğinizi varsayıyorum)? Eğer öyleyse, 'LocalDate''e dönüştürmeden önce' Takvim’in saat dilimini doğru saat dilimine ayarlamanız yeterlidir. –

1

LocalDate, istediğiniz sınıfa benzemiyor. doc Gönderen:

LOCALDATE bir tarih temsil eden bir değişmez datetime sınıfı bir zaman dilimi yoktur.

(vurgu bana ait)

9

1) dilimini alın:

TimeZone tz = calendar.getTimeZone(); 

2) Takvimden bir Joda DateTime oluşturun:

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

3) Bir LOCALDATE alın

LocalDate localDate = dateTime.toLocalDate(); 
İlgili konular