Local date time to date java

Convert Java LocalDate to Date

On this page we will provide how to convert java.time.LocalDate into java.util.Date . The LocalDate represents a date in the format yyyy-MM-dd such as 2019-05-08. We can use following method and constructor to create a Date object.
1. Date.from(instant): Obtains an instance of Date from an Instant object. We can use ZonedDateTime or Timestamp to get Instant . The ZonedDateTime and Timestamp can be obtained using LocalDateTime and LocalDateTime can be obtained using LocalDate .

2. Date(long date): Constructor that creates Date object and initializes it to represent the specified number of milliseconds. We can use Timestamp.getTime() to get time in milliseconds.

Contents

1. Using LocalDate.atTime

LocalDate.atTime method combines this date with a given time to create a LocalDateTime . The LocalDateTime.atZone combines this date-time with a time-zone to create a ZonedDateTime . The ZonedDateTime.toInstant converts this date-time to an Instant . Now we will pass this Instant instance to Date.from method that will return a java.util.Date instance.
Example:

LocalDate localDate = LocalDate.parse("2019-05-08"); Instant instant = localDate.atTime(LocalTime.MIDNIGHT).atZone(ZoneId.systemDefault()).toInstant(); Date date = Date.from(instant); System.out.println(date); //Wed May 08 00:00:00 IST 2019

2. Using LocalDate.atStartOfDay

Example-1: LocalDate.atStartOfDay(zone) returns a zoned date-time from this date at the earliest valid time according to the rules in the time-zone.

LocalDate localDate = LocalDate.parse("2019-05-08"); Instant instant = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant(); Date date = Date.from(instant); System.out.println(date); //Wed May 08 00:00:00 IST 2019

Example-2: LocalDate.atStartOfDay() combines this date with the time of midnight to create a LocalDateTime at the start of this date.

LocalDate localDate = LocalDate.parse("2019-05-08"); Instant instant = localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant(); Date date = Date.from(instant); System.out.println(date); //Wed May 08 00:00:00 IST 2019

3. Using LocalDateTime.of

LocalDate localDate = LocalDate.parse("2019-05-08"); Instant instant = LocalDateTime.of(localDate, LocalTime.MIDNIGHT).atZone(ZoneId.systemDefault()).toInstant(); Date date = Date.from(instant); System.out.println(date); //Wed May 08 00:00:00 IST 2019

4. Using Timestamp.valueOf

Timestamp.valueOf(dateTime) obtains an instance of Timestamp from a LocalDateTime object.

Читайте также:  Python exceptions best practices

Example-1: Instantiate LocalDateTime using LocalDate.atTime method.

LocalDate localDate = LocalDate.parse("2019-05-08"); Instant instant = Timestamp.valueOf(localDate.atTime(LocalTime.MIDNIGHT)).toInstant(); Date date = Date.from(instant); System.out.println(date); //Wed May 08 00:00:00 IST 2019
LocalDate localDate = LocalDate.parse("2019-05-08"); Instant instant = Timestamp.valueOf(LocalDateTime.of(localDate, LocalTime.MIDNIGHT)).toInstant(); Date date = Date.from(instant); System.out.println(date); //Wed May 08 00:00:00 IST 2019
LocalDate localDate = LocalDate.parse("2019-05-08"); Timestamp timestamp = Timestamp.valueOf(localDate.atTime(LocalTime.MIDNIGHT)); Date date = new Date(timestamp.getTime()); System.out.println(date); //Wed May 08 00:00:00 IST 2019

Complete Example

package com.concretepage; import java.sql.Timestamp; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.util.Date; public class LocalDateToDate < public static void main(String[] args) < LocalDate localDate = LocalDate.parse("2019-05-08"); Instant instant = localDate.atTime(LocalTime.MIDNIGHT).atZone(ZoneId.systemDefault()).toInstant(); Date date = Date.from(instant); System.out.println(date); instant = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant(); date = Date.from(instant); System.out.println(date); instant = localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant(); date = Date.from(instant); System.out.println(date); instant = LocalDateTime.of(localDate, LocalTime.MIDNIGHT).atZone(ZoneId.systemDefault()).toInstant(); date = Date.from(instant); System.out.println(date); instant = Timestamp.valueOf(localDate.atTime(LocalTime.MIDNIGHT)).toInstant(); date = Date.from(instant); System.out.println(date); instant = Timestamp.valueOf(LocalDateTime.of(localDate, LocalTime.MIDNIGHT)).toInstant(); date = Date.from(instant); System.out.println(date); Timestamp timestamp = Timestamp.valueOf(localDate.atTime(LocalTime.MIDNIGHT)); date = new Date(timestamp.getTime()); System.out.println(date); >>
Wed May 08 00:00:00 IST 2019 Wed May 08 00:00:00 IST 2019 Wed May 08 00:00:00 IST 2019 Wed May 08 00:00:00 IST 2019 Wed May 08 00:00:00 IST 2019 Wed May 08 00:00:00 IST 2019 Wed May 08 00:00:00 IST 2019

Источник

Convert between Java LocalDateTime and Date

This page will provide examples to convert from Java java.time.LocalDateTime to java.util.Date and from java.util.Date to java.time.LocalDateTime . The LocalDateTime , introduced in Java 8, is date-time without time-zone. The Date represents a specific instant in time, with millisecond precision.

1. LocalDateTime to Date

LocalDateTime does not consist a time-zone and Date represents a specific instant in time, with millisecond precision. To convert from LocalDateTime to Date , we need to provide time-zone.

LocalDateTime + Time-Zone = Date

We can convert LocalDateTime to Date with following methods.
1. Using LocalDateTime.atZone() : It combines this date-time with a given time-zone to create a ZonedDateTime . Then this ZonedDateTime can be converted into Instant . The method Date.from() accepts Instant and returns equivalent Date instance.

LocalDateTime localDateTime = LocalDateTime.parse("2019-11-15T13:15:30"); Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant(); Date date = Date.from(instant); System.out.println(date);

2. Using LocalDateTime.toInstant() : It combines this local date-time and the specified offset to form an Instant .

instant = localDateTime.toInstant(ZoneOffset.UTC); date = Date.from(instant); System.out.println(date);

3. Using Timestamp.valueOf() : It converts a string object in JDBC timestamp escape format to a Timestamp value. The given string date should be in yyyy-MM-dd HH:mm:ss format.

instant = Timestamp.valueOf(localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).toInstant(); date = Date.from(instant); System.out.println(date);
Timestamp timestamp = Timestamp.valueOf(localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); date = new Date(timestamp.getTime()); System.out.println(date);

Find the example.
LocalDateTimeToDate.java

package com.concretepage; import java.sql.Timestamp; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; import java.util.Date; public class LocalDateTimeToDate < public static void main(String[] args) < LocalDateTime localDateTime = LocalDateTime.parse("2019-11-15T13:15:30"); Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant(); Date date = Date.from(instant); System.out.println(date); instant = localDateTime.toInstant(ZoneOffset.UTC); date = Date.from(instant); System.out.println(date); instant = Timestamp.valueOf(localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).toInstant(); date = Date.from(instant); System.out.println(date); Timestamp timestamp = Timestamp.valueOf(localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); date = new Date(timestamp.getTime()); System.out.println(date); >>
Fri Nov 15 13:15:30 IST 2019 Fri Nov 15 18:45:30 IST 2019 Fri Nov 15 13:15:30 IST 2019 Fri Nov 15 13:15:30 IST 2019

2. Date to LocalDateTime

We can convert from Date to LocalDateTime in following ways.
1. First convert Date into Instant using Instant.ofEpochMilli() method. Then use LocalDateTime.ofInstant() method to convert Instant into LocalDateTime with given zone id.

Date date = new Date(); LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault()); System.out.println(localDateTime);

2. First convert Date into Instant then attach zone id using Instant.atZone() that will return ZonedDateTime . Then use ZonedDateTime.toLocalDateTime() to get LocalDateTime instance.

localDateTime = Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDateTime(); System.out.println(localDateTime);

DateToLocalDateTime.java

package com.concretepage; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.Date; public class DateToLocalDateTime < public static void main(String[] args) < Date date = new Date(); LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault()); System.out.println(localDateTime); localDateTime = Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDateTime(); System.out.println(localDateTime); >>
2019-08-28T20:31:13.473 2019-08-28T20:31:13.473

Источник

Преобразование даты в LocalDate или LocalDateTime и обратно

Начиная с Java 8, у нас есть новый API Date: java.time .

Однако иногда нам по-прежнему необходимо выполнять преобразования между новым и старым API и работать с представлениями даты из обоих.

2. Преобразование java.util.Date в java.time.LocalDate

Начнем с преобразования старого представления даты в новое.

Здесь мы можем воспользоваться новым методом toInstant() , который был добавлен в java.util.Date в Java 8.

Когда мы преобразовываем объект Instant , необходимо использовать ZoneId , потому что объекты Instant не зависят от часового пояса — просто точки на временной шкале.

API atZone(ZoneId zone) из объекта Instant возвращает ZonedDateTime , поэтому нам просто нужно извлечь из него LocalDate с помощью метода toLocalDate() .

Во-первых, мы используем системный ZoneId по умолчанию :

 public LocalDate convertToLocalDateViaInstant(Date dateToConvert)    return dateToConvert.toInstant()   .atZone(ZoneId.systemDefault())   .toLocalDate();   > 

И похожее решение, но с другим способом создания объекта Instant — с использованием метода ofEpochMilli() :

 public LocalDate convertToLocalDateViaMilisecond(Date dateToConvert)    return Instant.ofEpochMilli(dateToConvert.getTime())   .atZone(ZoneId.systemDefault())   .toLocalDate();   > 

Прежде чем двигаться дальше, давайте также кратко рассмотрим старый класс java.sql.Date и то, как его можно также преобразовать в LocalDate .

Начиная с Java 8, мы можем найти дополнительный метод toLocalDate () для java.sql.Date , который также дает нам простой способ преобразования его в java.time.LocalDate .

В этом случае нам не нужно беспокоиться о часовом поясе:

 public LocalDate convertToLocalDateViaSqlDate(Date dateToConvert)    return new java.sql.Date(dateToConvert.getTime()).toLocalDate();   > 

Точно так же мы можем преобразовать старый объект Date в объект LocalDateTime . Давайте посмотрим на это дальше.

3. Преобразование java.util.Date в java.time.LocalDateTime

Чтобы получить экземпляр LocalDateTime , мы можем аналогичным образом использовать посредник ZonedDateTime, а затем использовать API toLocalDateTime() .

Как и раньше, мы можем использовать два возможных решения для получения объекта Instant из java.util.Date :

 public LocalDateTime convertToLocalDateTimeViaInstant(Date dateToConvert)    return dateToConvert.toInstant()   .atZone(ZoneId.systemDefault())   .toLocalDateTime();   >    public LocalDateTime convertToLocalDateTimeViaMilisecond(Date dateToConvert)    return Instant.ofEpochMilli(dateToConvert.getTime())   .atZone(ZoneId.systemDefault())   .toLocalDateTime();   > 

Обратите внимание, что для дат до 10 октября 1582 года необходимо настроить Calendar как григорианский календарь и вызвать метод setGregorianChange ():

 GregorianCalendar calendar = new GregorianCalendar();  calendar.setGregorianChange(new Date(Long.MIN_VALUE));   Date dateToConvert = calendar.getTime(); 

И, начиная с Java 8, мы также можем использовать java.sql.Timestamp для получения LocalDateTime :

 ocalDateTime convertToLocalDateTimeViaSqlTimestamp(Date dateToConvert)    return new java.sql.Timestamp(   dateToConvert.getTime()).toLocalDateTime();   > 

4. Преобразование java.time.LocalDate в java.util.Date

Теперь, когда мы хорошо понимаем, как преобразовать старое представление данных в новое, давайте посмотрим на преобразование в другом направлении.

Мы обсудим два возможных способа преобразования LocalDate в Date .

В первом мы используем новый метод valueOf(LocalDate date) , предоставленный в объекте java.sql.Date , который принимает LocalDate в качестве параметра:

 public Date convertToDateViaSqlDate(LocalDate dateToConvert)    return java.sql.Date.valueOf(dateToConvert);   > 

Как мы видим, это легко и интуитивно понятно. Он использует местный часовой пояс для преобразования (все делается скрыто, так что не о чем беспокоиться).

В другом примере Java 8 мы используем объект Instant , который мы передаем в метод from (Instant Instant) объекта java.util.Date : **** «

 public Date convertToDateViaInstant(LocalDate dateToConvert)    return java.util.Date.from(dateToConvert.atStartOfDay()   .atZone(ZoneId.systemDefault())   .toInstant());   > 

Обратите внимание, что здесь мы используем объект Instant и что нам также нужно позаботиться о часовых поясах при выполнении этого преобразования.

Далее воспользуемся очень похожим решением для преобразования LocalDateTime в объект Date .

5. Преобразование java.time.LocalDateTime в java.util.Date

Самый простой способ получить java.util.Date из LocalDateTime — использовать расширение для java.sql.Timestamp, доступное в Java 8:

 public Date convertToDateViaSqlTimestamp(LocalDateTime dateToConvert)    return java.sql.Timestamp.valueOf(dateToConvert);   > 

Но, конечно, альтернативным решением является использование объекта Instant , который мы получаем из ZonedDateTime :

 Date convertToDateViaInstant(LocalDateTime dateToConvert)    return java.util.Date   .from(dateToConvert.atZone(ZoneId.systemDefault())   .toInstant());   > 

6. Дополнения для Java 9

В Java 9 доступны новые методы, упрощающие преобразование между java.util.Date и java.time.LocalDate или java.time.LocalDateTime .

LocalDate.ofInstant(Instant Instant, ZoneId zone) и LocalDateTime.ofInstant(Instant Instant, ZoneId zone) предоставляют удобные ярлыки:

 public LocalDate convertToLocalDate(Date dateToConvert)    return LocalDate.ofInstant(   dateToConvert.toInstant(), ZoneId.systemDefault());   >    public LocalDateTime convertToLocalDateTime(Date dateToConvert)    return LocalDateTime.ofInstant(   dateToConvert.toInstant(), ZoneId.systemDefault());   > 

7. Заключение

В этой статье мы рассмотрели возможные способы преобразования старого java.util.Date в новые java.time.LocalDate и java.time.LocalDateTime , а также наоборот.

Полная реализация этой статьи доступна на GitHub .

Источник

Оцените статью