[java] java.time.LocalDate를 java.util.Date 유형으로 변환

나는 변환 할 java.time.LocalDatejava.util.Date유형입니다. 날짜를로 설정하고 싶습니다 JDateChooser. 또는 날짜를 지원하는 날짜 선택기가 java.time있습니까?



답변

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

날짜 선택자가 시스템 기본 시간대를 사용하여 날짜를 문자열로 변환한다고 가정합니다.


답변

최신 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.sql.Date.valueOf()방법을 다음과 같이 사용할 수 있습니다 .

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

여기에는 표준 시간대 정보가 암시 적으로 사용되므로 여기에 표준 시간대 정보를 추가 할 필요가 없습니다. LocalDate에서 java.util.Date로 또는 그 반대로 변환을
참조하십시오 .


답변

java.time에는 대부분의 시간 클래스에서 Instant 객체를 만드는 데 사용할 수있는 Temporal 인터페이스가 있습니다. Instant는 Epoch의 타임 라인에서 밀리 초를 나타냅니다. 다른 모든 날짜와 시간의 기본 참조입니다.

변환을 수행하려면 날짜와 시간을 사용하여 ZonedDateTime으로 변환해야합니다.

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


답변

java.time.LocalDate 에서 java.util.Date 를 작성 하려면 다음을 수행해야합니다.

  • LocalDate에 시간을 추가
  • 시간대 내의 날짜와 시간을 해석
  • 에포크 이후 초 / 밀리 초를 얻습니다.
  • java.util.Date를 작성하십시오.

코드는 다음과 같습니다.

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


답변

이것은 나를 위해 작동합니다 :

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–


답변

코 틀린 솔루션 :

1)이 확장 기능을 어딘가에 붙여 넣습니다.

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

2) 사용하고 다시는 Google을 사용하지 마십시오.

val myDate = myLocalDate.toDate()