Convert java.time.LocalDate into java.util.Date type

JavaJava 8Java Time

Java Problem Overview


I want to convert java.time.LocalDate into java.util.Date type. Because I want to set the date into JDateChooser. Or is there any date chooser that supports java.time dates?

Java Solutions


Solution 1 - Java

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

That assumes your date chooser uses the system default timezone to transform dates into strings.

Solution 2 - Java

Here's a utility class I use to convert the newer java.time classes to java.util.Date objects and vice versa:

import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;

public class DateUtils {

  public static Date asDate(LocalDate localDate) {
    return Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
  }

  public static Date asDate(LocalDateTime localDateTime) {
    return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
  }

  public static LocalDate asLocalDate(Date date) {
    return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDate();
  }

  public static LocalDateTime asLocalDateTime(Date date) {
    return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDateTime();
  }
}

Edited based on @Oliv comment.

Solution 3 - Java

Disclaimer: For illustrating existing java apis only. Should not be used in production code.

You can use java.sql.Date.valueOf() method as:

Date date = java.sql.Date.valueOf(localDate);

No need to add time and time zone info here because they are taken implicitly.
See https://stackoverflow.com/questions/33066904/simpliest-java8-localdate-to-java-util-date-conversion-and-vice-versa

Solution 4 - Java

java.time has the Temporal interface which you can use to create Instant objects from most of the the time classes. Instant represents milliseconds on the timeline in the Epoch - the base reference for all other dates and times.

We need to convert the Date into a ZonedDateTime, with a Time and a Zone, to do the conversion:

LocalDate ldate = ...;
Instant instant = Instant.from(ldate.atStartOfDay(ZoneId.of("GMT")));
Date date = Date.from(instant);

Solution 5 - Java

This works for me:

java.util.Date d = new SimpleDateFormat("yyyy-MM-dd").parse(localDate.toString());

https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html#toString--

Solution 6 - Java

In order to create a java.util.Date from a java.time.LocalDate, you have to

  • add a time to the LocalDate
  • interpret the date and time within a time zone
  • get the number of seconds / milliseconds since epoch
  • create a java.util.Date

The code might look as follows:

LocalDate localDate = LocalDate.now();
Date date = new Date(localDate.atStartOfDay(ZoneId.of("America/New_York")).toEpochSecond() * 1000);

Solution 7 - Java

Kotlin Solution:

  1. Paste this extension function somewhere.

    fun LocalDate.toDate(): Date = Date.from(this.atStartOfDay(ZoneId.systemDefault()).toInstant())

  2. Use it, and never google this again.

    val myDate = myLocalDate.toDate()

Solution 8 - Java

localDate.format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));

Solution 9 - Java

public static Date convertToTimeZone(Date date, String tzFrom, String tzTo) {
    return Date.from(LocalDateTime.ofInstant(date.toInstant(), ZoneId.of(tzTo)).atZone(ZoneId.of(tzFrom)).toInstant());
} 

Solution 10 - Java

    LocalDate date = LocalDate.now();
	DateFormat formatter = new SimpleDateFormat("dd-mm-yyyy");
	try {
		Date utilDate= formatter.parse(date.toString());
	} catch (ParseException e) {
		// handle exception
	}

Solution 11 - Java

Simple

public Date convertFrom(LocalDate date) {
    return java.sql.Timestamp.valueOf(date.atStartOfDay());
}

Solution 12 - Java

java.util.Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKavinda GehanView Question on Stackoverflow
Solution 1 - JavaJB NizetView Answer on Stackoverflow
Solution 2 - JavaBrice RoncaceView Answer on Stackoverflow
Solution 3 - JavaGeorgeView Answer on Stackoverflow
Solution 4 - JavaKevin SadlerView Answer on Stackoverflow
Solution 5 - JavaceklockView Answer on Stackoverflow
Solution 6 - JavanosidView Answer on Stackoverflow
Solution 7 - JavagyoderView Answer on Stackoverflow
Solution 8 - JavaAzaView Answer on Stackoverflow
Solution 9 - JavaWilliam NguyenView Answer on Stackoverflow
Solution 10 - Javaredd77View Answer on Stackoverflow
Solution 11 - JavaArtur Luiz OliveiraView Answer on Stackoverflow
Solution 12 - JavaMahendra Sri DayarathnaView Answer on Stackoverflow