2014-04-19 3 views
0

10-APR-2014에 17 일을 더하고 날짜를 dd-MMM-yyy y 형식으로 변환하려고하는데, Sun Apr 27 00:00:00 GMT+05:30 2014이 표시됩니다.날짜를 dd-MMM-yyyy 형식으로 변환합니다.

import java.util.*; 
import java.text.*; 
public class HelloWorld{ 

    public static void main(String []args){ 
     SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy"); 
     Calendar c = Calendar.getInstance(); 
     c.setTime(new Date()); 
     c.add(Calendar.DATE, 17); 
     String output = sdf.format(c.getTime()); 
     System.out.println(output); 
     System.out.print(new SimpleDateFormat("dd-MMM-yyyy").parse(output)); 
    } 
} 

가 어떻게 출력이 27-Apr-2014 할 수 있습니다 : 여기

내 코드?

+0

'parse' 또는' 형식'? –

+0

문자열 객체가 아닌 날짜 객체에 출력을 저장하려고합니다. – Freakyuser

+0

날짜에 형식이 없습니다. –

답변

2

달력 날짜 형식의 문자열에서 구문 분석 된 날짜를 인쇄하고 있습니다. 당신이 뭔가를하고 싶은 경우 다음

Date date; // from Calendar or wherever 
String str = new SimpleDateFormat("dd-MMM-yyyy").format(date)); 
// display str 

: 표시하고,이 분리 된 할 수있는 날짜를 사용하여

System.out.print(new SimpleDateFormat("dd-MMM-yyyy").format(c.getTime())); 

경우 :

대신은, 포맷 된 달력의 날짜를 인쇄 선택한 날짜 :

String selection; 
Date date = new SimpleDateFormat("dd-MMM-yyyy").parse(selection)); 
// do something with date 
+0

이것은 문자열 출력을 제공하지만 날짜 객체가 필요합니다. 위의 문자열을 구문 분석 할 때 형식으로 가져올 수 없습니다. Btw, 나는 Sysout에서 인쇄하지 않을 것이고, 나는 그것을 hashmap에 저장할 것이다. – Freakyuser

+0

날짜 형식이 없습니다. 그들은 시간 안에 즉석입니다 *. 문자열을 표시해야합니다. 내 코드 당 렌더링 시간에 날짜 형식을 지정하십시오. – Bohemian

+0

결국이 날짜를 다른 날짜와 비교해야하기 때문에이 날짜가 필요합니다. 나는 끈으로이 일을 할 수 없을거야. 그렇지? – Freakyuser

0

answer by Bohemian이 정확합니다. 여기서 나는 대안을 제시한다. 자바와 함께 번들로

않도록 j.u.Date

java.util.Date의 및 .Calendar 클래스는 악명 골칫거리입니다. 그들을 피하십시오. 사용 Joda-Time 또는 Java 8의 새로운 java.time 패키지 중 하나

날짜 전용 언제든지 구성 요소없이 날짜 만 필요한 경우

, 모두 Joda-Timejava.time 제공 LocalDate 클래스입니다.

는 시간대

조차를 위해 날짜 만, 당신은 여전히 ​​"오늘"얻을 수있는 시간대가 필요합니다. 언제든지 날짜는 지구상의 위치에 따라 다를 수 있습니다. 시간대를 지정하지 않으면 JVM의 기본 시간대가 적용됩니다.

예제 코드

다음은 Joda-Time 2.3의 일부 예제 코드입니다.

일부 시간대를 기준으로 "오늘"을 결정합니다. 17 일을 더하십시오.

DateTimeZone timeZone = DateTimeZone.forID("Asia/Kolkata"); 
LocalDate today = new LocalDate(timeZone); 
LocalDate seventeenDaysLater = today.plusDays(17); 

날짜 - 시간 값의 문자열 표현을 생성

...

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MMM-yyyy"); 
String output = formatter.print(seventeenDaysLater); 

덤프가 콘솔로 ...

실행
System.out.println("today: " + today); 
System.out.println("seventeenDaysLater: " + seventeenDaysLater); 
System.out.println("output: " + output); 

...

today: 2014-04-21 
seventeenDaysLater: 2014-05-08 
output: 08-May-2014 
관련 문제