2011-01-11 26 views
44

Biraz daha hesaplamalar yapmadan önce TimeZone bilgilerini bir LocalDate'e eklemeyi deniyorum. LocalDate, varolan bir DateTime günlerini eklemek için ObjectLab LocalDateCalculator'ı kullanarak geldi, ancak yöntemin daha sonra inceleyebileceğim bir Aralık oluşturmak için değiştirilmiş bir ReadableInstant döndürmesi gerekiyor.Joda Localdate Joda DateTime nasıl dönüştürülecek?

Ben Joda DateTime için Joda LOCALDATE bir dönüşüme miktarlarda çalışıyorum kod:

alıyorum hata joda dönüşüm sisteminden olduğu
LocalDate contextLocalBusinessDate = calculator.getCurrentBusinessDate(); 
DateTime businessDateAsInContextLocation = new DateTime(contextLocalBusinessDate, contextTimeZone); 

: aradığım

java.lang.IllegalArgumentException: No instant converter found for type: org.joda.time.LocalDate 
     at org.joda.time.convert.ConverterManager.getInstantConverter(ConverterManager.java:165) 
     at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:147) 
     at org.joda.time.DateTime.<init>(DateTime.java:192) 

Bu soruna bir düzeltme veya tam zamanlı saat bilgisi içeren doğru bir Aralık ile sonuçlanan bir geçici çözüm. Ne istediğini konusunda açık olmak zorunda

:

cevap

66

dahil olmak üzere bu için LocalDate çeşitli yöntemler vardır zaman bileşeninin yeniden olması DateTime nesnesini işaret ediyor, bu yüzden DateTime 'ün genel dönüşümlü kurucusu bunu yapamıyor.

+11

Spot on. Farkında olmak için bir şey: toDateTimeAtStartOfDay, "gece yarısı" anlamına gelmez ... bazı saat dilimleri, gece yarısı saatlerinden 1: 00'a geçmek için gün ışığından yararlanma değişikliklerini uygular. –

+0

Yaptığım gibi, bu yöntemlerden hangisinin (burada olduğu gibi tüm DateTime, buradaki gibi) gerçekten önemli olmadığı sonucuna varabilirsin: Bir LocalDate'in kullanıldığı gerçeğin, belirli bir amaç için herhangi bir amaç olmaksızın kodlandığını ima etmesi gerekir. Bu tarihte zaman, bu tarihte dönüşümü ne zaman verirseniz verin, o tarihte başka herhangi bir zaman kadar iyidir. Önemli olan, bir zamanın verilmesi, LocalDate'e dönüştürmenin yapılabilmesine izin vermesidir ve ihtiyacınız olan şey bir tarih DateTime ise, zamanın ne olduğu (zamanla ilgilenmeyen bir LocalDate ile başladığınızdan beri) fark etmez. . – cellepo

+0

Lütfen yardım edin - Bu yöntemlerden herhangi birini LocalDate nesnemde göremiyorum. Cevabınızdaki '::' notasyonu ne anlama geliyor? –

İlgili konular