자바 getHours (), getMinutes () 및 getSeconds ()


81

내가 아는 한 getHours(), getMinutes()getSeconds()모든 Java에서 사용되지 않으며 그들은으로 대체된다 Calendar.HOUR_OF_DAY, Calendar.MINUTE, Calendar.SECOND.

실제로 특정 순간에 대한시, 분 및 초를 반환합니다. 그러나 Date 변수에서 시간과 분을 검색하고 싶습니다. 예를 들어

데이터베이스에서 검색된 시간이

time = Thu Jan 01 09:12:18 CET 1970;

int hours = time.getHours();
int minutes = time.getMinutes();
int seconds = time.getSeconds();

시간, 분, 초를 검색하여

hours = 9
minutes = 12
seconds = 18

그렇다면이 기능에 캘린더를 어떻게 사용합니까? (가) 있지만 getHours()사용되지되었지만 여전히했다. 이것에 대한 대안이 있는지 알고 싶습니다.

답변:


179

이 시도:

Calendar calendar = Calendar.getInstance();
calendar.setTime(yourdate);
int hours = calendar.get(Calendar.HOUR_OF_DAY);
int minutes = calendar.get(Calendar.MINUTE);
int seconds = calendar.get(Calendar.SECOND);

편집하다:

hours, minutes, seconds

위는 yourdate시스템 시간대 로 변환 한 후의 시간, 분, 초입니다 !


1
또한 시간대를 설정해야하는 경우 TimeZone을 추가합니다. tz = TimeZone.getTimeZone ( "UTC"); // ... 캘린더를 초기화합니다. calendar.setTimeZone (tz); <code>
Swaraj

33

자바 8

    System.out.println(LocalDateTime.now().getHour());       // 7
    System.out.println(LocalDateTime.now().getMinute());     // 45
    System.out.println(LocalDateTime.now().getSecond());     // 32

달력

System.out.println(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));  // 7 
System.out.println(Calendar.getInstance().get(Calendar.MINUTE));       // 45
System.out.println(Calendar.getInstance().get(Calendar.SECOND));       // 32

Joda 시간

    System.out.println(new DateTime().getHourOfDay());      // 7
    System.out.println(new DateTime().getMinuteOfHour());   // 45
    System.out.println(new DateTime().getSecondOfMinute()); // 32

포맷

자바 8

    // 07:48:55.056
    System.out.println(ZonedDateTime.now().format(DateTimeFormatter.ISO_LOCAL_TIME));
    // 7:48:55
    System.out.println(LocalTime.now().getHour() + ":" + LocalTime.now().getMinute() + ":" + LocalTime.now().getSecond());

    // 07:48:55
    System.out.println(new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()));

    // 074855
    System.out.println(new SimpleDateFormat("HHmmss").format(Calendar.getInstance().getTime()));

    // 07:48:55 
    System.out.println(new Date().toString().substring(11, 20));

V 유용한 요약 : 아마도 오늘날 가장 일반적인 날짜 / 시간 시스템 집합 일 것입니다.
StephenBoesch

1
그러나 시간과 분을 한 자리로 표시했습니다. 그것은 가능한 쇼 두 자리인가
피닉스

9

시차의 경우 달력은 00:00이 아닌 01.01.1970, 01:00에 시작됩니다. java.util.Date 및 java.text.SimpleDateFormat을 사용하는 경우 1 시간을 보상해야합니다.

long start = System.currentTimeMillis();
long end = start + (1*3600 + 23*60 + 45) * 1000 + 678; // 1 h 23 min 45.678 s
Date timeDiff = new Date(end - start - 3600000); // compensate for 1h in millis
SimpleDateFormat timeFormat = new SimpleDateFormat("H:mm:ss.SSS");
System.out.println("Duration: " + timeFormat.format(timeDiff));

다음과 같이 인쇄됩니다.

기간 : 1 : 23 : 45.678


2
와. 단지 방법 이 불가능 캔 날짜 조작 자바에서 할.
StephenBoesch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.