2012-01-02 3 views
1

테이블의 필드 유형으로 java.util.Date 클래스를 사용해야합니다. 그러나 날짜 필드의 표시 형식을 joda 시간의 도움으로 변경하고 싶습니다 (사용하기 편한 편협한), 왜 Date를 DateTime으로 변환하려고하는지.java.util.Date를 org.joda.time.DateTime으로 변환하려면 어떻게해야합니까?

나는 stackoverflow에 그런 질문이 없기 때문에 내가 뭔가를 감독한다는 것을 알고있다. :) 그러나 나는 DateTime 생성자들 사이에서 영혼을 찾지 못했다. 역 변환 DateTime.toDate(); 이 존재하지만 그 반대의 경우는 어떨까요?

미리 답변 해 주셔서 감사합니다.

고사

+0

가능한 중복 http://stackoverflow.com/questions/5042587/convert-from-java-util-date-to-jodatime – Xorty

+0

좋아, 작동, 감사하지만, API에 따라 이러한 없다 Date를 받아들이는 생성자 ... 다시 한번 감사드립니다. 아마 내가 잘못 이해 한 것일 수도 있습니다. – cscsaba

+0

당신은 환영합니다 :) – Xorty

답변

1

당신이 joda없이 테이블에 표시 형식을 변경하려는 경우 만약 angel에서, 당신은 단순히 그것을 할 방법 여기 protected String formatPropertyValue(Object rowId, Object colId, Property property)

에게 예를 오버라이드 (override) :

Table t = new Table() { 

     @Override 
     protected String formatPropertyValue(Object rowId, Object colId, 
       Property property) { 
      Object v = property.getValue(); 
      if (v instanceof Date) { 
       Date dateValue = (Date) v; 
       return new SimpleDateFormat("yyyy-MMMM-dd").format(dateValue); 
      } 
      return super.formatPropertyValue(rowId, colId, property); 
     } 

    }; 

감사합니다

에릭

+0

감사합니다 에릭,하지만 많은 사람들 상 jodatime 그게 내가 조금 알고 싶습니다. 하지만 당신의 노력에 감사드립니다. – cscsaba

0

예, Joda-Time을 사용하십시오.

Java 8의 Joda-Time 또는 java.time package을 확실히 사용하십시오 (Joda-Time에서 영감을 얻음). 이전 java.util.Datejava.util.Calendar 클래스는 매우 번거롭고 혼란스럽고 구식입니다.

또한 위키 피 디아 페이지는 UTCISO 8601입니다.

, Joda 타임 생성자

➔에 전달 날짜 예 실제로, 당신은 Joda 타임 DateTime 객체의 constructorjava.util.Date 개체를 전달할 수 있습니다.

API 문서는 다소 혼란 스럽습니다. 이는 명백히 java.lang.Object 인스턴스를 사용하는 생성자의 포괄 버전으로 분류됩니다. 해당 Object가 실제로 java.util.Date 인 경우 Joda-Time은 epoch부터 밀리 초 카운트를 추출하여 해당 숫자를 자체 것으로 사용합니다.

시간대

DateTime 생성자는 시간대를 지정합니다. 기본적으로 JVM의 현재 기본 시간대가 지정됩니다. 항상 getDefault을 호출하는 경우에도 기본값에 암시 적으로 의존하지 않고 항상을 전달하는 것이 좋습니다. 다음 예제 코드

는 Joda 타임 생성자에 java.util.Date를 전달하는 방법을 나타내는 타임 2.5 Joda 일부 코드 예이다.

java.util.Date date = new java.util.Date(); 
DateTimeZone zone = DateTimeZone.forID("America/Montreal"); 
DateTime dateTimeMontreal = new DateTime(date , zone); 
DateTime dateTimeUtc = dateTimeMontreal.withZone(DateTimeZone.UTC); // Adjust to another time zone. 

콘솔에 덤프.

System.out.println("date: " + date); // Misleading output. A j.u.Date is in UTC but its toString method applies JVM’s current default time zone. 
System.out.println("dateTimeMontreal: " + dateTimeMontreal); 
System.out.println("dateTimeUtc: " + dateTimeUtc); 

실행하면.

java.util.Date에 날짜 시간에서 가고, 질문에 나타낸 바와 같이
date: Sat Oct 18 18:54:55 PDT 2014 
dateTimeMontreal: 2014-10-18T21:54:55.740-04:00 
dateTimeUtc: 2014-10-19T01:54:55.740Z 

, toDate를 호출합니다.

java.util.Date date = dateTimeMontreal.toDate(); 

관련 문제