nueva - java util date
Java8 java.util.Date conversión a java.time.ZonedDateTime (2)
Para obtener un ZonedDateTime desde una fecha, puede usar:
calculateFromDate.toInstant().atZone(ZoneId.systemDefault())
Luego puede llamar al método toLocalDate
si necesita un LocalDate. Ver también: Convertir java.util.Date a java.time.LocalDate
Recibo la siguiente excepción al intentar convertir java.util.Date
a java.time.LocalDate
.
java.time.DateTimeException: Unable to obtain ZonedDateTime from TemporalAccessor: 2014-08-19T05:28:16.768Z of type java.time.Instant
El código es el siguiente:
public static Date getNearestQuarterStartDate(Date calculateFromDate){
int[] quaterStartMonths={1,4,7,10};
Date startDate=null;
ZonedDateTime d=ZonedDateTime.from(calculateFromDate.toInstant());
int frmDateMonth=d.getMonth().getValue();
¿Hay algún problema en la forma en que estoy usando la clase ZonedDateTime
?
Según la documentación, esto debería convertir un objeto java.util.Date
a ZonedDateTime
. El formato de fecha anterior es la fecha estándar?
¿Debo retroceder en el tiempo de Joda?
Si alguien pudiera ofrecer alguna sugerencia, sería genial.
Para transformar un Instant
a un ZonedDateTime
, ZonedDateTime
ofrece el método ZonedDateTime.ofInstant(Instant, ZoneId)
. Asi que
Por lo tanto, suponiendo que desee un ZonedDateTime
en la zona horaria predeterminada, su código debe ser
ZonedDateTime d = ZonedDateTime.ofInstant(calculateFromDate.toInstant(),
ZoneId.systemDefault());