두 개의 날짜 필드가 있습니다. 사용자는 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"에서, 부정한다 이 날짜를 필수 형식으로 변환 하시겠습니까?
사실 내 질문에 언급하지 않았지만 두 날짜를 비교하고 싶습니다. 하나가 더 빠르거나, 나중에 또는 다른 것과 같으면 ** 두 번째 부분은 'DateTime'부분을 무시합니다. 'HH : mm : ss'가 아니라'HH : mm'과 함께). Joda를 사용하여 시간 부분을 완전히 무시하는 것은 쉽습니다. - if (DateTimeComparator.getDateOnlyInstance(). compare (startDate, endDate) == 0) {...}'(동등 함) . 그러나 나는'DateTime' ('ss' 내 경우)의 특정 부분을 무시하는 방법을 모르겠습니다. 이것이 가능한가? 고맙습니다. – Tiny
'DateTime dateTimeWithoutSeconds = originalDateTime.withMillis (0) .withSecondOfMinute (0);'는 secondDateTime을 첫 번째 인스턴스와 동일하게 만들지 만 secodns와 milliseconds는 0으로 설정합니다. 두 인스턴스 모두에서이를 수행하고 각각의 결과를 비교하십시오. //joda-time.sourceforge.net/api-release/index.html –
최종 DateTime startDate = ((DateTime) object1) .withZone (DateTimeZone.forID ("Asia/Kolkata")). withMillis (0) .withSecondOfMinute (0);''startDate = 1970-01-01T05 : 30 : 00.000 + 05 : 30'을 반환합니다. – Tiny