[java] Java 날짜 및 시간 클래스를 사용해야합니까 아니면 Joda Time과 같은 타사 라이브러리를 사용해야합니까?

전 세계 국가에서 사용할 웹 기반 시스템을 만들고 있습니다. 저장해야하는 한 가지 유형의 데이터는 날짜와 시간입니다.

Joda 시간 과 같은 타사 라이브러리와 비교하여 Java 날짜 및 시간 클래스 사용의 장단점은 무엇입니까 ? 나는 이러한 타사 라이브러리가 좋은 이유 때문에 존재한다고 생각하지만 실제로는 실제로 비교하지 않았습니다.



답변

편집 : 이제 Java 8이 릴리스되었으므로 사용할 수 있다면 그렇게하십시오! java.time내 생각에 Joda Time보다 더 깨끗합니다. 그러나 Java-8 이전 버전이 붙어 있으면 계속 읽으십시오 …

Max는 Joda 사용의 장단점을 요청했습니다 …

장점 :

  • 잘 작동합니다. Joda에는 표준 Java 라이브러리보다 버그가 훨씬 적습니다. Java 라이브러리의 일부 버그는 디자인으로 인해 수정하기가 어렵습니다 (불가능하지는 않지만).
  • “현지 시간”(예 : “어디서나 오전 7시에 깨우십시오”) 개념과 시간 ( “제임스 전화” 오후 3시 (태평양 표준시), 현재 위치는 오후 3 시가 아닐 수 있지만 동일한 순간입니다. “)
  • 나는 그것이 더 쉽게 시간대 데이터베이스를 업데이트 할 수 있습니다 믿지 않는 변화를 비교적 자주를
  • 불변성 스토리가 좋기 때문에 인생을 훨씬 쉽게 IME로 만들 수 있습니다.
  • 불변성으로 인해 모든 포맷터는 스레드로부터 안전합니다. 거의 항상 응용 프로그램을 통해 단일 포맷터를 재사용하기를 원하기 때문에 훌륭 합니다.
  • java.timeJava 8 학습 은 약간 유사하기 때문에 학습 을 시작할 수 있습니다.

단점 :

  • 배우는 또 다른 API입니다 (문서는 꽤 좋지만)
  • 빌드하고 배포하는 또 다른 라이브러리입니다.
  • Java 8을 사용할 때 여전히 기술을 마이그레이션하기위한 작업이 있습니다.
  • DateTimeZoneBuilder과거 에는 효과적으로 사용하지 못했습니다 . 이것은 매우 드문 사용 사례입니다.

작은 API를 효과적으로 구축한다는 oxbow_lakes의 아이디어에 응답하기 위해 이것이 왜 나쁜 아이디어인지에 대한 나의 견해는 다음과 같습니다.

  • 일 이네 왜 이미 당신을 위해 일했을 때 일합니까?
  • 팀에 새로 온 사람은 자체 개발 한 API보다 Joda에 훨씬 익숙 할 것입니다.
  • 가장 간단한 용도 이외의 문제는 잘못 될 가능성이 있습니다. 처음에는 간단한 기능 만 필요 하다고 생각 하더라도 한 번에 조금씩 더 복잡 해지는 습관이 있습니다. 날짜 및 시간 조작 을 제대로 수행 하기가 어렵 습니다. 또한 내장 Java API는 올바르게 사용하기 가 어렵습니다 . 달력 API의 날짜 / 시간 산술 작동 방식에 대한 규칙을 살펴보십시오. 이 위에 무엇이든 구축하는 것은 잘 설계된 라이브러리를 사용하는 것보다는 나쁜 생각입니다.

답변

글쎄, Java 8을 기다리지 않는 한 날짜와 시간을 처리 하기 위해 더 나은 API 를 구현 하기를 희망한다면 Joda-Time을 사용하십시오 . 시간을 절약하고 많은 두통을 피하십시오.


답변

대답은 : 그것은 의존한다

JODA (및 JSR-310)는 여러 달력 시스템에서 사용할 수있는 기능을 포함하여 모든 기능을 갖춘 날짜 / 시간 라이브러리입니다.

개인적으로 JODA는 내가 필요로하는 복잡성 측면에서 너무 한 걸음 인 것으로 나타났습니다. 표준 Java DateCalendar클래스 에서 2 가지 주요 (IMHO) 실수는 다음 과 같습니다.

  1. 그들은 변하기 쉬워
  2. 그들은 즉각적인 시간에서 1 년의 개념을 섞습니다.

이것들은 JODA에 의해 다루어 지지만 실제 “calendrical”계산을 위해 자바 클래스를 사용하는 YearMonthDayand Instant에 대한 클래스를 롤링하는 것이 매우 쉽다는 것을 알 수 있습니다 . 그런 다음 100 개 이상의 클래스, 다른 형식 지정 / 구문 분석 메커니즘 등의 API를 익히지 않아도됩니다.

물론, 다른 연대기 (예 : 히브리어)를 완전히 표현해야하거나 자신의 가상 캘린더 시스템 (예 : 작성중인 게임)을 정의하려는 경우 JODA 또는 JRS-310이 적합합니다. 그렇지 않다면, 자신의 롤링이 가능할 것이라고 제안합니다.

JSR-310 스펙 리더는 1 위에 JODA를 작성한 Stephen Colebourne이므로 JODA를 논리적으로 대체 합니다.


답변

그것은 당신이 날짜로 무엇을하고 있는지에 달려 있습니다. 단순히 유지하는 경우 Java의 내장 날짜는 아마도 원하는 모든 것을 할 것입니다. 그러나 광범위한 시간 날짜 조작을 수행하는 경우 Joda를 사용하는 것이 좋습니다.


답변

다음과 같은 이유로 Joda-Time 라이브러리를 사용해야합니다.

  1. Joda-Time은 표준
    날짜 표시 방식 인 ISO 8601 표준을 지원합니다
    .
  2. Joda-Time에서 일 / 월 / 년을 더하고 빼는 것이 java.util.date보다 쉽습니다.
  3. Joda-Time에서는 제공 날짜 별 초기화가 훨씬 쉽습니다.
  4. Joda-Time은 시간대도 지원합니다.
  5. Joda-Time에는 더 나은 내장 구문 분석 기능이 있습니다. “2014-02-31″과 같은 잘못된 날짜가 오류로 발생합니다.Exception in thread "main"
    org.joda.time.IllegalFieldValueException: Cannot parse "2014-02-31":
    Value 31 for dayOfMonth must be in the range [1,28].

자세한 내용은이 페이지를 참조하십시오 :
http://swcodes.blogspot.com/


답변