2012-12-05 2 views
0

두 날짜가 문자열 형식 (예 : 2012-04-23, 2012-03-08)으로 두 가지 차이점을 찾고 싶습니다.차이를 계산하기 위해 문자열을 날짜로 변환합니다.

Java에서 계산하는 가장 좋은 방법은 무엇입니까?

나는 날짜와 날짜 객체로 문자열을 설정하고 밀리 초에 해당하는 시간을 얻기 위해 날짜에 다음 getTime() 메소드를 사용하지 않는 시간

+3

비슷한 질문 : http://stackoverflow.com/questions/5351483/calculate-date-time-difference-in-java – Mik378

+0

차이점을 어떻게 나타내시겠습니까? 분/시간/일 ... –

+0

Maxim Shoustin : 시간이 아닌 날짜에만 관심이 있습니다. – Ghadeer

답변

3

다음을 사용하여 날짜 문자열을 변환 할 수 있습니다 : 당신은 SimpleDateFormat에 대한 자세한 here을 읽을 수

String dateString = "2012-04-23"; 
Date date = new SimpleDateFormat("yyyy-mm-dd").parse(dateString); 

. 1970

일로 변환하려면

int milliseconds = dateOne.getTime() - dateTwo.getTime(); 

getTime() 년 1 월 1 일 이후의 밀리 초 수를 반환


두 날짜 사이의 차이에 관해서는, 당신과 함께 밀리 초를 계산할 수 있습니다 , 사용 :

int days = milliseconds/(1000 * 60 * 60 * 24) 
+0

@EdwardRuchevits 및 주/년/월의 차이점은 무엇입니까? 월 29/30/31에 며칠 째인지 알지 못하기 때문에 기술이 좋지 않습니다. –

+0

주? ** days **를 ** 7 **로 나누십시오. 연령? ** days by ** 365.242 **. 그것은 명백하지 않습니까? 몇 달이 지나면 더 복잡해질 것입니다. –

+0

하루가 23 시간 또는 25 시간이기 때문에 하루 간의 절충 경계에서 논리 사이의 일 수가 실패 할 수 있습니다 –

1

사용하여 SimpleDateFormat 그냥 걱정. 2 밀리 초 값의 차이를 가져옵니다.

2

프로젝트에 타사 항아리를 추가하고자하는 경우, 현재까지 jodatime

DateTimeFormatter 포맷터 = DateTimeFormat.forPattern를 (" dd/MM/yyyy HH : mm : ss ");

DateTime dt = formatter.parseDateTime (your-string);

  • 것은 그들 사이의 차이 비교 - interval

인터벌 간격 = 새로운 간격 (TIME1, TIME2)를;

또한

0

당신은 당신에게 할 수 있습니다 jodatime lib 디렉토리의 개념은 간격과 지속 시간의 차이를 확인 할 수 있습니다 DateFormat의, 날짜 및 아래 달력 조합 :

DateFormat dFormat = new SimpleDateFormat("yyyy-MM-dd"); 
    Date date1 = dFormat.parse("2012-04-23"); 
    Date date2 = dFormat.parse("2012-03-08"); 
    long timeDifInMillis = date1.getTime() - date2.getTime(); 

    Date dateDiff = new Date(timeDifInMillis); 
    Calendar diffCal = Calendar.getInstance(); 
    diffCal.setTime(dateDiff); 
    System.out.println("Days="+diffCal.get(Calendar.DAY_OF_MONTH)); 
    System.out.println("Months="+diffCal.get(Calendar.MONTH)); 
    System.out.println("Years="+(diffCal.get(Calendar.YEAR)-1970)); 
관련 문제