2009-03-18 2 views
7

JDK의 날짜 및 시간 클래스와 관련 서식 지정 방법에 익숙합니다. 나는 장님 일지 모르지만, 시간 간격을 처리하기 위해 동등한 클래스 집합을 찾을 수는 없습니다. 예를 들어, 주어진 긴 값 (밀리 초)에 대한 일 수를 표시하려고합니다. 이 변환을 수행하는 방법은 매우 간단하지만, 국제화 및 현지화 지원을 고려할 때이 작업은 그리 간단하지 않습니다.Java에서 시간/날짜 간격을 계산하고 형식을 지정하는 쉬운 방법이 있습니까?

JDK에서 간격 처리 지원이 누락되었습니다. 그러나 Postgresql과 같은 데이터베이스는이를 지원합니다.

  • 시간 계산 방법 : 또는 제 3 자 라이브러리 (내가 너무 그것을 볼 장님 경우) 내가 JDK에서 찾고 있어요 기본적으로 무엇을

    는 다음과 같은 기능입니다. 밀리 초에서 수 주 또는 초에서 나노 초. 수학은 이러한 작업에 간단하지만 API를 사용하는 것이 내게 더 많은 문서화가 될 것 같습니다.

  • DateFormat과 같이 전달 된 로캘에 따라 형식을 지정하는 시간 간격 형식 함수가 작동합니다. 예를 들어, EN_US에서는 10 일이 "10 일"이라고 가정하고 일본어로 "10 일"을 반환 할 것이라고 가정합니다.

새로운 오픈 소스 프로젝트에는 어떤 것이 있습니까? 아니면 canidate입니까?

답변

9

당신이 Joda Time를 시도 거기 DateUtils 클래스가?

+0

+1 Joda Time은 꽤 멋지게 보입니다. 좋은 현지화 된 달력 지원 외에도 간격 처리가 있습니다. – Elijah

+1

이것은 거의 진부 해지고 있습니다. (http://stackoverflow.com/questions/635935/how-can-i-calculate-a-time-span-in-java-and-format-the-output 및 http://stackoverflow.com에서 의견보기/questions/643402/simple-java-date-calculations, 아마도 "관련"섹션의 모든 질문을 참조하십시오.) –

+0

아마도 이것은 자바 개발자에게 jdk의 명백한 누락에 대해 알려줄 것입니다. 안녕 얘들 아? – Elijah

3

http://commons.apache.org/에서 모양과

+0

해당 프로젝트는 어떤 프로젝트입니까? – Elijah

+0

+1 알았습니다. 그것은 lang 꾸러미에있다. 이미 현재 프로젝트에서 lang을 가져오고 있으므로 알기가 쉽습니다. – Elijah

0

불행히도 표준 라이브러리에는 이와 비슷한 점이 없지만 Tobiask는 Apache Commons에 유용한 도구가 있음을 지적합니다.

DurationFormatUtils에는 몇 가지 미리 정의 된 형식 (시 : 분 : 초, ISO)이 있으며 사용자가 직접 지정할 수 있습니다.

1

TL; DR

성가신 오래된 일시 클래스 java.time

사용
Duration.ofMillis(yourMillisecondsLongNumberGoesHere) 
     .toDays() 

는 java.time 클래스로 대체되고있다.

I 밀리 초 주어진 긴 값 일수를 표시하고자

24 시간의 덩어리로서 정의시, 분, 초 (및 일을 포함하는 시간 간격에서

), Duration 클래스를 사용하십시오.

Duration d = Duration.ofMillis(yourMillisecondsLongNumberGoesHere); 

는 86,400L에 의해 전체 초 총 수를 정의하여 정의 된 일의 수를 얻으려면, toDays를 호출합니다. java.time

소개

long days = d.toDays(); 

java.time 프레임 워크는 나중에 자바 8에 내장되어 있습니다.이 클래스는 java.util.Date, Calendar, & SimpleDateFormat과 같이 문제가있는 이전 legacy 날짜 - 시간 클래스를 대체합니다.

maintenance mode에있는 Joda-Time 프로젝트는 java.time 클래스로의 마이그레이션을 권장합니다.

자세히 알아 보려면 Oracle Tutorial을 참조하십시오. 그리고 많은 예제와 설명을 위해 스택 오버플로를 검색하십시오. 사양은 JSR 310입니다.

어디에서 java.time 클래스를 얻을 수 있습니까?

ThreeTen-Extra 프로젝트는 추가 클래스와 java.time를 확장합니다. 이 프로젝트는 향후 java.time에 추가 될 수있는 가능성을 입증합니다. 여기에 Interval, YearWeek, YearQuartermore과 같은 유용한 클래스가 있습니다.