2012-07-05 2 views
0

jquery date picker와 함께 struts2.x를 사용하고 있습니다.
dd/mm/yyyy 형식으로 표시하려고합니다. 하지만 그것을 가져올 때 데이터베이스에서 yyyy-mm-dd처럼오고 있습니다. 그런 다음이를 필요한 형식으로 변환했지만 형식은 String입니다. 그럼 다음에 날짜 형식으로 변환. 그러나 형식이 변경되었습니다.문자열 형식의 날짜 dd/mm/yyyyy를 같은 형식의 날짜 유형으로 변환 할 수 있습니까?

Date getRiskCommDate() 
{ 
String fString = null; 
System.out.println("Coming Date from DB"+riskCommDate); 
if(riskCommDate!=null) 
{ 
SimpleDateFormat format = new SimpleDateFormat(); 
format.applyPattern("dd/MM/yyyy"); 
fString = format.format(riskCommDate); 
} 
System.out.println("Formated Date in String Form "+fString); 
Date d = new Date(fString); 
System.out.println("Formated Date in Date form Date "+d); 
return d; 
} 

출력 : DB에서

오는 날짜 2012-07-04
문자열 양식의 형식의 날짜 2012년 4월 7일
날짜 형식 날짜 형식의 날짜 토 4월 7일 0시 : 00 IST 2012

모든 아이디어는 높이 평가됩니다.

+0

FYI, [java.util.Date'] (https://docs.oracle.com/javase/9/docs/api/java/util/Date.html)와 같은 번거로운 이전 날짜 시간 클래스 , ['java.util.Calendar'] (https://docs.oracle.com/javase/9/docs/api/java/util/Calendar.html),'java.text.SimpleDateFormat'은 이제 [유산 ] (https://en.wikipedia.org/wiki/Legacy_system), [* java.time *] (https://docs.oracle.com/javase/9/docs/api/java/time/)을 대신합니다. package-summary.html) Java 8 및 Java 9에 내장 된 클래스. [* Tutorial * by Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html)을 참조하십시오. –

답변

4

java.util.Date 클래스에는 형식을 유지할 수있는 속성이 없습니다.

Date의 값을 사용자 지정 형식으로 표시하려면 메서드를 SimpleDateFormat으로 호출하십시오.

당신이 할 때 :

System.out.println(dateInstance) 

... 당신은 단순히 DatetoString()을 요구하고있다. 이 메서드는 날짜를 String 버전의 고정 된 형식으로 반환합니다. 의견을 바탕으로

당신은 어쨌든 당신이 사용자 정의 클래스 포장 날짜 인스턴스를 만들 수 있습니다 날짜 인스턴스를 사용자 정의 형식을 원하는 경우

class MyDate{ 
    private Date date; 
    //provide appropriate accessor 
    //override toString() method to support required output 
} 

또는 extendDate

class MyDate extends Date{ 
    //override toString() method to support required output 
    @Override 
    public String toString(){ 
     //convert `this` to String with required format with the help of `SimpleDateFormat` 
    } 
} 
+0

안녕하세요 Jigar, 나는 그것을 어떤 형식 으로든 날짜 형식으로 변환해야합니다. 그렇지 않으면 내 응용 프로그램이 전혀 작동하지 않을 것입니다. 그래서 어떤 가능성이 있습니까? –

+0

'String'에 보관 –

+0

동일한 형식으로 날짜 유형으로 변환해야합니다 ... –

2

날짜는 로켈을 기반으로 한 형식을 인쇄합니다. 그것은 당신이 그것을 구성하기를 원하는 형식을 "기억하지"않습니다. 문자열에만 특정 형식이 있으므로 필요한 경우 String으로 유지하십시오. 초기 자바와 함께 번들로

+0

안녕하세요 피터, 나는 날짜로 열 유형으로 데이터베이스와 같은 데이터 멤버를 삽입 해요. 내가 변환해야한다 날짜 만 ... –

0

java.time

오래된 골칫거리 날짜 - 시간 라이브러리는 나중에 자바 8에 내장 된 java.time 프레임 워크에 의해 대체되었다. Java 6 & 7의 경우 백 포트 인 ThreeTen-Backport를 사용하고 안드로이드의 경우 ThreeTenABP를 사용하십시오. 이전 java.util.Date/.Calendar 등은 사용하지 마십시오.

LocalDate

java.time 클래스는 시간의 일없이 시간대없이 날짜 만 값 LocalDate을 포함한다.

java.sql.Date

희망 JDBC 드라이버는 java.time 유형과 직접 거래 업데이트됩니다. 그때까지 java.sql 유형을 사용하여 데이터베이스에서 데이터를 이동하거나 이동합니다. 오래된 자바.sql 클래스는 새로운 to…valueOf 메서드를 사용하여 java.time으로 변환합니다. 여기에 우리의 관심은 java.sql.Date입니다.

LocalDate localDate = myJavaSqlDate.toLocalDate(); 

다른 방향으로 이동하여 데이터베이스에 제출할 수 있습니다.

java.sql.Date myJavaSqlDate = java.sql.Date.valueOf(localDate); 

문자열을 생성 논의 된 날짜 클래스 (java.util.Date, java.sql.Date, java.time.LocalDate)의

없음은 "형식"가 없습니다. 값의 텍스트 표현 만 형식을 갖습니다. String이 필요하면이 클래스는 String 객체를 생성 할 수있다. 그러나 String 객체와 날짜 - 시간 객체는 완전히 별개이며 별개이므로 이들 객체와 날짜 객체를 혼동하지 마십시오.

LocalDatetoString 방법은 2012-07-04 (2012 년 7 월 4 일을 의미)과 같은 표준 ISO 8601 형식을 사용합니다.

String outputIso8601 = localDate.toString(); 

다른 형식의 경우 DateTimeFormatter을 사용하십시오. 스택 오버플로에 대한 다른 많은 질문과 대답에는 더 많은 논의가 있습니다.

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); 
String output = localDate.format(formatter); // Generates a textual representation of the object’s date-only value. 

더 나은 점은 java.time이 현지화되어 있습니다.

DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT); 
formatter = formatter.withLocale(Locale.CANADA_FRENCH); // or Locale.US, and so on. 
String output = localDate.format(formatter); 

소개 java.time은

java.time 프레임 워크는 나중에 자바 8에 내장되어 있습니다. 이러한 클래스는 java.util.Date, Calendar, & SimpleDateFormat과 같이 번거로운 이전 legacy 날짜 - 시간 클래스를 대체합니다.

maintenance mode에있는 Joda-Time 프로젝트는 java.time 클래스로의 마이그레이션을 권장합니다.

자세히 알아 보려면 Oracle Tutorial을 참조하십시오. 그리고 많은 예제와 설명을 위해 스택 오버플로를 검색하십시오. 사양은 JSR 310입니다.

java.time 개체를 데이터베이스와 직접 교환 할 수 있습니다. JDBC 4.2 이상을 준수하는 JDBC driver을 사용하십시오. 문자열이 필요 없으며 java.sql.* 클래스가 필요하지 않습니다.

어디에서 java.time 클래스를 얻을 수 있습니까?

  • Java SE 8, Java SE 9, 나중에
    • 내장한다.
    • 번들로 구현 된 표준 Java API의 일부입니다.
    • Java 9에는 몇 가지 사소한 기능과 수정 사항이 추가되었습니다.
  • Java SE 6 및 java.time 기능의 대부분
  • Android
    • 이후 버전.
    • 이전 Android (< 26)의 경우 ThreeTenABP 프로젝트는 ThreeTen-Backport (위에서 언급 한)을 채택합니다. How to use ThreeTenABP…을 참조하십시오.

ThreeTen-Extra 프로젝트는 추가 클래스와 java.time를 확장합니다. 이 프로젝트는 향후 java.time에 추가 될 수있는 가능성을 입증합니다. 여기에 Interval, YearWeek, YearQuartermore과 같은 유용한 클래스가 있습니다.

관련 문제