2013-10-01 1 views
46

사용자가 명령 줄에 입력 한 기간 동안 보고서를 생성하는 Java 응용 프로그램을 작성 중입니다. 사용자는 다음과 같은 형식으로 날짜를 입력 할 필요가 : DD-MM-YYYY자바에서 날짜가 다른 것보다 큰지 확인하는 방법은 무엇입니까?

> java report startDate endDate

예 :

자바 보고서 2013년 1월 1일 31-03-2013

코드에서 두 개의 문자열로 날짜를 저장합니다. 사용자가 입력 한 시작 날짜가 종료 날짜보다 빠른 날짜 여야합니다. 이 두 문자열을 전달하여이 작업을 수행하는 데 도움이되는 내장 함수가 있습니까?

+2

문자열을 java.util.Date로 변환하십시오. Date는 Comparable을 구현합니다. – PeterMmm

+0

업데이트 : java.time 클래스는 'Date'와'Calendar'와 같이 문제가있는 오래된 레거시 날짜 - 시간 클래스를 대신합니다. –

답변

84

날짜 비교를 위해 Date.before() 또는 Date.after() 또는 Date.equals()을 사용할 수 있습니다.

here에서 촬영 :

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class DateDiff { 

    public static void main(String[] args) 
    { 
     compareDates("2017-01-13 00:00:00", "2017-01-14 00:00:00");// output will be Date1 is before Date2 
     compareDates("2017-01-13 00:00:00", "2017-01-12 00:00:00");//output will be Date1 is after Date2 
     compareDates("2017-01-13 00:00:00", "2017-01-13 10:20:30");//output will be Date1 is before Date2 because date2 is ahead of date 1 by 10:20:30 hours 
     compareDates("2017-01-13 00:00:00", "2017-01-13 00:00:00");//output will be Date1 is equal Date2 because both date and time are equal 
    } 

    public static void compareDates(String d1,String d2) 
    { 
     try{ 
      // If you already have date objects then skip 1 

      //1 
      // Create 2 dates starts 
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
      Date date1 = sdf.parse(d1); 
      Date date2 = sdf.parse(d2); 

      System.out.println("Date1"+sdf.format(date1)); 
      System.out.println("Date2"+sdf.format(date2));System.out.println(); 

      // Create 2 dates ends 
      //1 

      // Date object is having 3 methods namely after,before and equals for comparing 
      // after() will return true if and only if date1 is after date 2 
      if(date1.after(date2)){ 
       System.out.println("Date1 is after Date2"); 
      } 
      // before() will return true if and only if date1 is before date2 
      if(date1.before(date2)){ 
       System.out.println("Date1 is before Date2"); 
      } 

      //equals() returns true if both the dates are equal 
      if(date1.equals(date2)){ 
       System.out.println("Date1 is equal Date2"); 
      } 

      System.out.println(); 
     } 
     catch(ParseException ex){ 
      ex.printStackTrace(); 
     } 
    } 

    public static void compareDates(Date date1,Date date2) 
    { 
     // if you already have date objects then skip 1 
     //1 

     //1 

     //date object is having 3 methods namely after,before and equals for comparing 
     //after() will return true if and only if date1 is after date 2 
     if(date1.after(date2)){ 
      System.out.println("Date1 is after Date2"); 
     } 

     //before() will return true if and only if date1 is before date2 
     if(date1.before(date2)){ 
      System.out.println("Date1 is before Date2"); 
     } 

     //equals() returns true if both the dates are equal 
     if(date1.equals(date2)){ 
      System.out.println("Date1 is equal Date2"); 
     } 

     System.out.println(); 
    } 
} 
9

firstDatesecondDateSimpleDateFormat를 사용하여 두 날짜를 구문 분석합니다.

firstDate.after(secondDate);

firstDate.before(secondDate);

8

날짜에 문자열을 구문 분석, 다음은 compareTo위해 compareTo, before 또는 후

Date d = new Date(); 
d.compareTo(anotherDate) 

Date date1 = new SimpleDateFormat("MM/dd/yyyy").parse(date1string) 
Date date2 = new SimpleDateFormat("MM/dd/yyyy").parse(date2string) 

date1.compareTo(date2); 

자바 독을 사용하여 비교http://docs.oracle.com/javase/6/docs/api/java/util/Date.html#compareTo(java.util.Date)

+2

인수 Date가이 Date와 같으면 값 0을 반환하고 그렇지 않으면 0을 반환합니다. 이 Date가 Date 인수보다 앞이면 0보다 작은 값. 이 Date가 Date 인수보다 뒤에 있으면 0보다 큰 값입니다 .' 그리고'NullPointerException - anotherDate가 null 인 경우 .' –

관련 문제