我想将java.time.LocalDate转换为java.util.Date类型。因为我想将日期设置为JDateChooser。或者有任何日期选择器支持java。时间日期吗?


当前回答

免责声明:仅用于说明现有的java api。不应该在产品代码中使用。

你可以使用java.sql.Date.valueOf()方法:

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

这里不需要添加时间和时区信息,因为它们是隐式获取的。 查看LocalDate到java.util.Date,反之亦然,最简单的转换?

其他回答

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

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

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

简单的

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

下面是我用来转换新java的实用程序类。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评论编辑。

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