El uso de Groovy (o Java) ¿cómo puedo convertir un org.joda.time.LocalDateTime a un java.util.date?

StackOverflow https://stackoverflow.com/questions/2009795

Pregunta

El uso de Groovy (o Java) ¿cómo puedo convertir un org.joda.time.LocalDateTime a un java.util.Date?

import org.joda.time.*

Calendar cal = Calendar.instance
    cal.set(Calendar.DATE, 1)
    cal.set(Calendar.HOUR, 0)
    cal.set(Calendar.MINUTE, 0)
    cal.set(Calendar.SECOND, 0)
    cal.set(Calendar.MILLISECOND, 0)

Date startOfTheMonth = cal.time 

LocalDateTime localDateTime = new LocalDateTime()
    localDateTime = localDateTime.withDayOfMonth(1)
    localDateTime = localDateTime.withTime(0,0,0,0)
    localDateTime.minusMonths(6)

Date dateFromLocalDate = localDateTime.toDateTime().toDate()

println startOfTheMonth
println dateFromLocalDate

assert  startOfTheMonth.equals(dateFromLocalDate)

usando localDateTime.toDateTime().toDate() me da una java.util.Date que es de 6 horas fuera Estoy en hora central estándar (GMT 6)

¿Cómo convierto mi fecha de LocalDateTime de nuevo a un java.util.Date tal que coincide con el tiempo?

¿Fue útil?

Solución

EDIT:

El problema es el uso de .HOUR que indica la hora de la mañana o por la tarde.

De cualquier uso:

cal.set(Calendar.HOUR_OF_DAY, 0)

o

cal.set(Calendar.AM_PM, Calendar.AM)
cal.set(Calendar.HOUR, 0)

Otros consejos

En algún lugar durante la conversión, se utiliza la zona de momento equivocado. Depurar este al ver lo que la zona horaria predeterminada es TimeZone.getDefault() y lo que el defecto Joda-Time es DateTimeZone.getDefault().

Puede ser más explícito cuando se hace la conversión también:

localDateTime.toDateTime(yourDesiredZone).toDate()

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top