2011-01-11 26 views
44

Intento simplemente agregar la información de TimeZone en un LocalDate antes de realizar algunos cálculos más. El LocalDate proviene del uso de ObjectLab LocalDateCalculator para agregar días a un DateTime existente, pero el método necesita devolver un ReadableInstant modificado para formar un intervalo que luego puedo inspeccionar.Cómo convertir Joda Localdate a Joda DateTime?

El código que estoy tratando cantidades a una conversión de Joda Joda a LocalDate Tiempo:

LocalDate contextLocalBusinessDate = calculator.getCurrentBusinessDate(); 
DateTime businessDateAsInContextLocation = new DateTime(contextLocalBusinessDate, contextTimeZone); 

El error que consigo es del sistema de conversión de Joda:

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) 

Busco una solución a este problema, o una solución que da como resultado un intervalo preciso con información de zona horaria completa.

Respuesta

66

Existen varios métodos en LocalDate para esto, incluyendo:

Tienes que ser explícito acerca de lo que quiere el componente de tiempo para estar en el re sulting DateTime objeto, por lo que el constructor de conversión general de DateTime no puede hacerlo.

+11

Spot on. Una cosa a tener en cuenta: toDateTimeAtStartOfDay no significa "medianoche" ... algunas zonas horarias implementan cambios de horario de verano para saltar de la medianoche a la 1am. –

+0

Puede concluir como lo hice, que cuál de los métodos (que todos devuelven DateTime, como los que aparecen aquí) que usted elige realmente no importa: El hecho de que se haya utilizado un LocalDate implicaría que fue codificado sin ningún tipo de intención para un particular hora en esa fecha, por lo tanto, cualquiera que sea el momento en que lo entregue en la conversión en esa fecha es tan bueno como en cualquier otro momento en esa fecha. La clave es que darle un tiempo es lo que permite la conversión a LocalDate, y no importa la hora (ya que comenzó con LocalDate que no le importaba el tiempo) si todo lo que necesita es algún tipo de DateTime . – cellepo

+0

Ayuda: no puedo ver ninguno de estos métodos en mi objeto LocalDate. ¿Qué significa la notación '::' en tu respuesta? –

Cuestiones relacionadas