[java] 자바 : getMinutes 및 getHours

이후 어떻게 시간과 분을받을 수 있나요 Date.getHoursDate.getMinutes사용되지있어? Google 검색에서 찾은 예제는 더 이상 사용되지 않는 방법을 사용했습니다.



답변

표준 java.util.Date 클래스 대신 Joda Time을 사용하십시오 . Joda Time 라이브러리에는 날짜 처리를위한 API가 훨씬 우수합니다.

DateTime dt = new DateTime();  // current time
int month = dt.getMonth();     // gets the current month
int hours = dt.getHourOfDay(); // gets hour of day

Joda Time 라이브러리 사용의 장단점에 대해서는이 질문 을 참조하십시오 .

Joda Time은 표준 구성 요소로 일부 Java 버전에 포함될 수도 있습니다 ( JSR-310 참조) .


전통적인 java.util.Date 및 java.util.Calendar 클래스를 사용해야하는 경우 해당 JavaDoc의 도움말 ( java.util.Calendarjava.util.Date ) 을 참조하십시오 .

이와 같은 전통적인 클래스를 사용하여 지정된 Date 인스턴스에서 필드를 가져올 수 있습니다.

Date date = new Date();   // given date
Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance
calendar.setTime(date);   // assigns calendar to given date 
calendar.get(Calendar.HOUR_OF_DAY); // gets hour in 24h format
calendar.get(Calendar.HOUR);        // gets hour in 12h format
calendar.get(Calendar.MONTH);       // gets month number, NOTE this is zero based!


답변

Date.getHours에 대한 Javadoc에서

As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY)

그래서 사용

Calendar rightNow = Calendar.getInstance();
int hour = rightNow.get(Calendar.HOUR_OF_DAY);

getMinutes에 해당합니다.


답변

java.time

난의 팬이 있지만 Joda 타임 , 자바 (8) 소개 java.time의 마지막 가치 자바 표준 솔루션 패키지를! 시간과 분이 아닌 java.time에 대한 자세한 정보는 Java SE 8 Date and Time 기사를 읽으십시오 .

특히 LocalDateTime수업을보십시오.

시간과 분 :

LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();


답변

먼저 java.util.Calendar를 가져 오십시오.

Calendar now = Calendar.getInstance();
System.out.println(now.get(Calendar.HOUR_OF_DAY) + ":" + now.get(Calendar.MINUTE));


답변

tl; dr

ZonedDateTime.now().getHour()

… 또는…

LocalTime.now().getHour() 

ZonedDateTime

JD답변 은 훌륭하지만 최적은 아닙니다. 그 답변은 LocalDateTime클래스를 사용합니다 . 시간대 또는 UTC에서 오프셋 개념이 없기 때문에 해당 클래스는 순간을 나타낼 수 없습니다.

사용하는 것이 좋습니다 ZonedDateTime.

ZoneId z = ZoneID.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;

시간대 지정

ZoneId인수 를 생략하면 런타임시 JVM의 현재 기본 시간대를 사용하여 내재적으로 적용됩니다.

그래서 이거:

ZonedDateTime.now()

… 이와 동일합니다 :

ZonedDateTime.now( ZoneId.systemDefault() )

원하는 / 예상 시간대를 전달하여 명시 적으로 작성하는 것이 좋습니다. 기본값은 런타임 중에 언제든지 변경할있습니다 .

중요한 경우 사용자와 시간대를 확인하십시오.

시분

심문 ZonedDateTime시간과 분을 위해.

int hour = zdt.getHour() ;
int minute = zdt.getMinute() ;

LocalTime

시간대가없는 시간대 만 원하면을 추출하십시오 LocalTime.

LocalTime lt = zdt.toLocalTime() ;

또는 ZonedDateTime으로 직접 이동하여 완전히 건너 뜁니다 LocalTime.

LocalTime lt = LocalTime.now( z ) ;  // Capture the current time-of-day as seen in the wall-clock time used by the people of a particular region (a time zone).

java.time 타입

최신 java.time 대 레거시의 날짜-시간 클래스 유형 표


java.time에 대하여

java.time의 프레임 워크는 나중에 자바 8에 내장되어 있습니다. 이 클래스는 까다로운 기존에 대신 기존 과 같은 날짜 – 시간의 수업을 java.util.Date, Calendar, SimpleDateFormat.

자세한 내용은 Oracle Tutorial을 참조하십시오 . 많은 예제와 설명을 보려면 스택 오버플로를 검색하십시오. 사양은 JSR 310 입니다.

Joda 타임 프로젝트는 지금에 유지 관리 모드 의로 마이그레이션을 조언 java.time의 클래스.

java.time 객체를 데이터베이스와 직접 교환 할 수 있습니다 . JDBC 4.2 이상을 준수 하는 JDBC 드라이버를 사용하십시오 . 문자열이 필요없고 수업이 필요 없습니다 .java.sql.*

java.time 클래스는 어디서 구할 수 있습니까?

ThreeTen – 추가 프로젝트 추가 클래스와 java.time를 확장합니다. 이 프로젝트는 향후 java.time에 추가 될 수있는 입증 된 근거입니다. 당신은 여기에 몇 가지 유용한 클래스와 같은 찾을 수 있습니다 Interval, YearWeek, YearQuarter, 그리고 .


답변

캘린더를 사용해보십시오. getInstance를 사용하여 Calender-Object를 가져옵니다. 그런 다음 setTime을 사용하여 필요한 날짜를 설정하십시오. 이제 HOUR_OF_DAY와 같은 적절한 상수와 함께 get (int field)을 사용하여 필요한 값을 읽을 수 있습니다.

http://java.sun.com/javase/6/docs/api/java/util/Calendar.html


답변

int hr=Time.valueOf(LocalTime.now()).getHours();
int minutes=Time.valueOf(LocalTime.now()).getMinutes();

이 함수는 int 값을 시간과 분으로 반환합니다.