我想将java.time.LocalDate转换为java.util.Date类型。因为我想将日期设置为JDateChooser。或者有任何日期选择器支持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());
} 

其他回答

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

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

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

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

简单的

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

为了从java.time创建java.util.Date。LocalDate,你必须

向LocalDate添加时间 在一个时区内解释日期和时间 获取自epoch以来的秒数/毫秒数 创建一个java.util.Date

代码可能如下所示:

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

java。time具有Temporal接口,您可以使用该接口从大多数time类创建Instant对象。Instant表示Epoch(所有其他日期和时间的基本参考)中时间轴上的毫秒数。

我们需要将Date转换为一个带Time和Zone的ZonedDateTime来进行转换:

LocalDate ldate = ...;
Instant instant = Instant.from(ldate.atStartOfDay(ZoneId.of("GMT")));
Date date = Date.from(instant);
    LocalDate date = LocalDate.now();
    DateFormat formatter = new SimpleDateFormat("dd-mm-yyyy");
    try {
        Date utilDate= formatter.parse(date.toString());
    } catch (ParseException e) {
        // handle exception
    }