[java] 자바 날짜 마감 시간 정보

날짜 및 시간 정보가 포함 된 Java Date 객체가 있습니다. 시간 정보를 자르고 시간-분-초를 자르는 방법을 작성하고 싶습니다. 그래서 날짜 만 남았습니다.

입력 예 :

2008-01-01 13:15:00

예상 출력 :

2008-01-01 00:00:00

팁이 있습니까? 나는 다음과 같은 것을 시도했다.

(timestamp / (24 * 60 * 60 * 1000)) * (24 * 60 * 60 * 1000)

하지만 시간대에 문제가 생겼습니다.



답변

추천 날짜 / 시간 조작을 할 수있는 방법은 사용하는 Calendar개체를 :

Calendar cal = Calendar.getInstance(); // locale-specific
cal.setTime(dateObject);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
long time = cal.getTimeInMillis();


답변

Apache Commons Lang에서 DateUtils truncate 메소드를 보셨습니까 ?

Date truncatedDate = DateUtils.truncate(new Date(), Calendar.DATE);

시간 요소를 제거합니다.


답변

Joda를 보셨습니까 ? 날짜와 시간으로 작업 하는 훨씬 쉽고 직관적 인 방법입니다. 예를 들어 LocalDateTimeLocalDate 객체 사이에서 사소하게 변환 할 수 있습니다 .

예 (API를 설명하기 위해)

LocalDate date = new LocalDateTime(milliseconds).toLocalDate()

또한 날짜 / 시간 포맷터의 일부 스레드 안전성 문제를 해결하며 Java의 모든 날짜 / 시간 문제에 대해 작업 할 때 강력히 권장됩니다.


답변

이제 Java 8 이상에 내장 된 java.time 클래스 에 비추어 간단한 업데이트입니다 .

LocalDateTimetruncatedTo여기서 말하는 내용을 효과적으로 해결 하는 방법이 있습니다.

LocalDateTime.now().truncatedTo(ChronoUnit.MINUTES)

이것은 현재 시간을 분 단위로만 표현합니다.

2015-03-05T11:47

자르기를 실행하기 위해 DAYS보다 작은 ChronoUnit(또는 TemporalUnit)을 사용할 수 있습니다 ( 잘림은 날짜 부분이 아닌 LocalDateTime의 시간 부분에만 적용되므로).


답변

Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
date = cal.getTime();


답변

Joda를 사용하면 예상 날짜를 쉽게 얻을 수 있습니다.

버전 2.7부터 (아마도 2.2보다 큰 이전 버전 이후 일 수 있음), 주석가가 언급했듯이 toDateMidnight더 이상 사용되지 않거나 적절하게 이름이 지정 withTimeAtStartOfDay()되어 편리합니다.

DateTime.now().withTimeAtStartOfDay()

가능한.

더 좋은 API의 이점이 추가되었습니다.

이전 버전에서는 다음을 수행 할 수 있습니다.

new DateTime(new Date()).toDateMidnight().toDate()


답변

새로운 java8 API로 잘림을 수행했습니다. 나는 이상한 일에 직면했지만 일반적으로 잘립니다 …

Instant instant = date.toInstant();
instant = instant.truncatedTo(ChronoUnit.DAYS);
date = Date.from(instant);