답변:
표준 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.Calendar 및 java.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에 해당합니다.
ZonedDateTime
되었습니다. 대신 사용하십시오 .
난의 팬이 있지만 Joda 타임 , 자바 (8) 소개 java.time의 마지막 가치 자바 표준 솔루션 패키지를! 시간과 분이 아닌 java.time에 대한 자세한 정보는 Java SE 8 Date and Time 기사를 읽으십시오 .
특히 LocalDateTime
수업을보십시오.
시간과 분 :
LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();
LocalDateTime.now(ZoneId.of("Asia/Manilla"))
. now()
일관성을 위해 한 번만 읽으십시오 (두 통화간에 시간이 경과 함). 날짜가 실제로 관련이 없다면 LocalTime
작동합니다.
ZonedDateTime
클래스보다는 클래스를 사용 하는 것 LocalDateTime
입니다. 으로 LocalDateTime
당신은 아무것도, 아무 이유없이 귀중한 시간대 정보를 폐기된다되었습니다.
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의 프레임 워크는 나중에 자바 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 값을 시간과 분으로 반환합니다.
java.sql.Time
습니까? 확실히 구식 클래스를 게임에 도입 할 이유가 전혀 없습니다 java.time.LocalTime
. 당신은 너무 복잡하다.
getMinutes()
(I 자바 1.8을 사용하고 있습니다)에서 사용되지 않으며 대체되었습니다Calendar.get(Calendar.MINUTE)
분과 시간을 얻는 또 다른 방법은 SimpleDateFormat을 사용하는 것입니다.
SimpleDateFormat formatMinutes = new SimpleDateFormat("mm")
String getMinutes = formatMinutes.format(new Date())
SimpleDateFormat formatHours = new SimpleDateFormat("HH")
String getHours = formatHours.format(new Date())
java.util.Date
, java.util.Calendar
그리고 java.text.SimpleDateFormat
지금 기존 에 의해 대체, java.time의 나중에 자바 8에 내장 된 클래스. Oracle의 Tutorial 을 참조하십시오 .
광고 요다 시간을 보는 것이 좋습니다. http://www.joda.org/joda-time/
두꺼운 프로젝트에 다른 라이브러리를 추가하는 것이 두려웠지만 쉽고 빠르며 똑똑하고 훌륭합니다. 또한 기존 코드와 어느 정도 잘 어울립니다.
java.util.Date
,java.util.Calendar
그리고java.text.SimpleDateFormat
지금 기존 에 의해 대체, java.time의 나중에 자바 8에 내장 된 클래스. Oracle의 Tutorial 을 참조하십시오 .