将java.time.LocalDate转换为java.util.Date类型

问题

我想转换java.time.LocalDateintojava.util.Datetype。因为我想将日期设置为JDateChooser。或者是否有支持java.time日期的日期选择器?


#1 热门回答(344 赞)

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

假设你的日期选择器使用系统默认时区将日期转换为字符串。


#2 热门回答(78 赞)

这是我用来将newerjava.time类转换为java.util.Date对象的实用程序类,反之亦然:

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();
  }
}

根据@Oliv评论编辑。


#3 热门回答(58 赞)

你可以使用887101578方法:

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

无需在此处添加时间和时区信息,因为它们是隐式使用的。
SeeLocalDate to java.util.Date and vice versa simpliest conversion?