NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    Java 자바 날짜 비교. (Java compare to date)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 오늘은 자바에서 두 날짜를 비교하는 방법에 대해서 알아보도록 하겠습니다. C#은 DateTime이라는 개체가 있는데요. 자바에는 Date가 있습니다. 동일하다고 할수는 없지만~ 비슷하게 사용할 수 있다보니 비교가 되곤 합니다. 아무튼, C#은 아래와 같이 날짜를 비교할 수 있습니다.

    DateTime date1 = DateTime.Now;
    DateTime date2 = DateTime.Now.AddSeconds(10);
    
    if (date1〈 date2) {
      Console.Write("date1 보다 date2가 큽니다.");
    }

     

    java.util.Date 클래스는 날짜 및 시간을 밀리세컨드(ms, milliseconds)로 나타냅니다. C#은 연산자 오버로딩이 되어 있어서 오퍼레이터로 직접 비교가 가능합니다. 이런 부분이 좀 편리하긴 합니다. 자바는 연산자 오버로딩을 지원하지 않기 때문에 클래스를 비교할 수 있는 메소드를 제공합니다.

     

    Date.compareTo

    Date 클래스에서 제공하는 메소드로 Date 클래스를 인수로 받습니다. 두개의 Date 객체가 동일하면 0을 반환하고, 이전 날짜면 0보다 작은 값을 반환합니다. 이후 날짜면 0보다 큰 값을 반환합니다.

     

    Date.before

    compareTo와 동일하지만, 인자로 주어인 Date가 이전인지 판단합니다.

     

    Date.after

    인자로 주어진 Date가 이후인지 판단합니다.

     

    Java 8(1.8)에서 새롭게 추가된 LocalDate 클래스가 있습니다. 이전에 사용하던 Date는 안전하지 않은 null 처리와 불안전한 스레드, 메소드의 부재등... 다양한 문제가 있었습니다. 몇가지 예로  자바의 Date와 C#의 DateTime은 이상하게 월은 -1처리되어 표시됩니다. 그래서 항상 1을 더해줘야합니다. 자바의 Date는 integer 상수로 구분하기 때문에 Canendar.add(Calendara.Date, 1)과 Calendar.add(Calendar.DECEMBER, 1)을 구분할 수 없습니다. 특히나 일관성 없는 요일 상수로 인해 잠재적인 위험을 개발자가 떠않을수밖에 없습니다. 

     

    참고로, JavaScript의 Date도 문제가 많습니다. 자바스크립트를 처음 만들 때 Java를 모델로 대부분의 객체를 포팅했기 때문인데요. 그래서, 요즘에는 날짜 관련 자바스크립트 패키지를 사용하거나 새로운 문법인 인터네셔널(Intl)을 사용하고 있습니다.

     

    아래는 간단하게 date1과 date2를 비교해본 코드입니다.

    LocalDate date1 = LocalDate.of(2022, 10, 19);
    LocalDate date2 = LocalDate.of(2023, 10, 19);
    int result = date1.compareTo(date2);
    
    System.out.println(result);

     

    Date 객체에서는 before, after 메소드를 사용하지만, LocalDate는 isBefore, isAfter, isEqual 메소드를 사용합니다. 메소드 이름만봐도 뭔가 더 직관적이게 변했죠? 우리가 개발할 때 boolean 형식은 의도적으로 isEqual 또는 useTestEngine과 같이 사용합니다. 이렇게하면 분석도 용이하고, 다른 개발자가 내 코드를 봤을 때 어떻게 사용해야 하고, 어떤 결과를 받을지 쉽게 유추할 수 있습니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.