2015-01-19 2 views

답변

3

여러 가지 해결책이 있습니다. java.time에서 Java 8 클래스를 사용하려면 DateDateTime 클래스 중 하나로 변환해야합니다. 다음은 당신이 다음 시간을 얻을 수있는 곳에 ZonedDateTimeDate을 변환 할 수 있습니다 :

Date date = new Date(); 

// Convert to java 8 ZonedDateTime 
Date date = new Date(); 
final ZonedDateTime dateTime = date.toInstant() 
     .atZone(ZoneId.systemDefault()); 

// Get the hour 
int hour = dateTime.getHour(); 

아주 자세한 당신은 발견했지만 이것에 대한 간단한 이유는 Datesort of an Instant

것을 그대로

이름에도 불구하고 java.util.Date은 "날짜"가 아닌 타임 라인의 순간을 나타냅니다. 개체에 저장된 실제 데이터는 1970-01-01T00 : 00Z (1970 GMT/UTC 시작일 자정) 이후로 긴 밀리 초입니다.

또 다른 접근법은 단순히 Calendar 인스턴스에서 필드를 가져 오는 것입니다.

final Calendar instance = Calendar.getInstance(); 
instance.setTime(date); 
final int hourOfDay = instance.get(Calendar.HOUR_OF_DAY); 
+1

'ZonedDateTime'을'LocalDateTime'으로 변환하지만,'getHour()'도'ZonedDateTime'에서 사용할 수 있습니다. 그래서 추가 변환은 필요 없습니다. – bowmore

+1

@bowmore, 좋은 전화 응답이 업데이트되었습니다. – wassgren

관련 문제