2013-02-18 4 views
1

두 개의 날짜 필드가 있습니다. 사용자는 jQuery 날짜 - 시간 선택기에서 날짜를 선택할 수 있습니다.이 선택기는 Spring의 사용자 정의 속성 편집기를 통해 UTC 형식으로 변환되고 양식 제출시 Java bean에 채워집니다. 자바 빈에서Joda의 기존 DateTime 인스턴스의 날짜 시간 형식을 변경하십시오.

DateTime 인스턴스는

final Object object1 = PropertyUtils.getProperty(beanObject, firstDate); 
final Object object2 = PropertyUtils.getProperty(beanObject, secondDate); 

이러한 객체 유형 캐스트 ​​DateTime에있는 같은 반사를 통해 org.apache.commons.beanutils.PropertyUtils으로 검색됩니다.

if(object1!=null && object2!=null) 
{ 
    final DateTime startDate=((DateTime)object1).withZone(DateTimeZone.forID("Asia/Kolkata")); 
    final DateTime endDate=((DateTime)object2).withZone(DateTimeZone.forID("Asia/Kolkata")); 

    System.out.println("startDate = "+startDate+"\nendDate = "+endDate); 
} 

이렇게하면 다음과 같은 결과가 출력됩니다.

startDate = 2013-02-17T22:45:59.000+05:30 
endDate = 2013-02-18T22:46:00.000+05:30 

나는이 형식으로이 날짜를 Conver 유럽 필요 - dd-MMM-yyyy HH:mm:ss

나는이 작동하지 않는 시도 다음 방법.

DateTime newStartDate=new DateTime(startDate.toString("dd-MMM-yyyy HH:mm:ss")); 
DateTime newEndDate=new DateTime(startDate.toString("dd-MMM-yyyy HH:mm:ss")); 

System.out.println("newStartDate = "+newStartDate+"\nnewEndDate = "+newEndDate); 

다음 예외가 있습니다.

java.lang.IllegalArgumentException가 : 잘못된 형식 : "17 2 월 2013 22시 45분 59초"

어떻게 "22시 45분 59초 -2 월 2013"에서, 부정한다 이 날짜를 필수 형식으로 변환 하시겠습니까?

답변

1

DateTime에는 형식이 없습니다. 이 값은 1970 년 1 월 1 일 이후의 밀리 초 수와 연대기를가집니다. DateTime을 형식을 선택해야하는 문자열로 변환하는 경우에만 해당됩니다. 그리고 당신은 당신이 당신의 질문에서 그것을하고 있기 때문에 이미 그것을 어떻게하는지 압니다.

그래서 당신이하려는 것은 의미가 없습니다.

+0

사실 내 질문에 언급하지 않았지만 두 날짜를 비교하고 싶습니다. 하나가 더 빠르거나, 나중에 또는 다른 것과 같으면 ** 두 번째 부분은 'DateTime'부분을 무시합니다. 'HH : mm : ss'가 아니라'HH : mm'과 함께). Joda를 사용하여 시간 부분을 완전히 무시하는 것은 쉽습니다. - if (DateTimeComparator.getDateOnlyInstance(). compare (startDate, endDate) == 0) {...}'(동등 함) . 그러나 나는'DateTime' ('ss' 내 경우)의 특정 부분을 무시하는 방법을 모르겠습니다. 이것이 가능한가? 고맙습니다. – Tiny

+0

'DateTime dateTimeWithoutSeconds = originalDateTime.withMillis (0) .withSecondOfMinute (0);'는 secondDateTime을 첫 번째 인스턴스와 동일하게 만들지 만 secodns와 milliseconds는 0으로 설정합니다. 두 인스턴스 모두에서이를 수행하고 각각의 결과를 비교하십시오. //joda-time.sourceforge.net/api-release/index.html –

+0

최종 DateTime startDate = ((DateTime) object1) .withZone (DateTimeZone.forID ("Asia/Kolkata")). withMillis (0) .withSecondOfMinute (0);''startDate = 1970-01-01T05 : 30 : 00.000 + 05 : 30'을 반환합니다. – Tiny

관련 문제