it-swarm.dev

LocalDate to Java.util.Date a naopak nejjednodušší konverze?

Existuje jednoduchý způsob, jak převést LocalDate (zavedené s Java 8) na objekt Java.util.Date

„Jednoduchým“ tím myslím jednodušší než toto: 

Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());

což mi připadá trochu trapné. 

Vzhledem k tomu, že máme zájem pouze o datovou část a v žádném z těchto objektů nejsou žádné informace o časové zóně, proč zavádět časové zóny explicitně? Pro konverzi by se měl implicitně brát čas půlnoci a výchozí časové pásmo systému.

98
George

Vlastně je. V objektu Java.sql.Date existuje statická metoda valueOf , která to přesně dělá. Takže máme

Java.util.Date date = Java.sql.Date.valueOf(localDate);

a to je vše. Žádné explicitní nastavení časových pásem, protože místní časové pásmo je přijímáno implicitně.

Z dokumentů:

Poskytovaný LocalDate je interpretován jako místní datum v místním časovém pásmu .

Java.sql.Date podtřídy Java.util.Date, takže výsledek je také Java.util.Date.

A pro reverzní operaci existuje metoda toLocalDate ve třídě Java.sql.Date. Takže máme:

LocalDate ld = new Java.sql.Date(date.getTime()).toLocalDate();

117
George

Datum -> LocalDate:

LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

LocalDate -> Datum:

Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
14
Hai Nguyen

Datum na LocalDate

Date date = new Date();
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

LocalDate to Date

LocalDate localDate = LocalDate.now();
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
2
fjkjava

Převod LocalDateTime na Java.util.Date

    LocalDateTime localDateTime = LocalDateTime.now();

    ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneOffset.systemDefault());

    Instant instant = zonedDateTime.toInstant();

    Date date = Date.from(instant);

System.out.println("Result Date is : "+date);
0
Simhadri