2014-07-15 4 views
2

VB에서 잠시 후에이 문제를 해결하고 Java로 쉽게 변환 할 수 있다고 생각했습니다. 입력은 "mm/dd/yyyy"형식의 문자열로 제공됩니다. "mm/dd/yy" 마지막 2 년 숫자 만 표시되는 형식으로이 값을 변경하고 싶습니다. 나는 이것이 않는, 잠시 다시 VB 썼다 단지 : 날짜가 제대로 포맷하고 원래 있던 문자열로 반환 될 수 있도록 나는 자바에서이 똑같은 일을 할 수있는 방법Java에서 문자열 날짜를 다시 포맷하는 방법

Function DateFormat(ByVal myDate As String) As String 
    Dim reformat As Date 
    reformat = Date.Parse(myDate, Nothing) 
    Return Format(reformat, "MM/dd/yy").ToString() 
End Function 

? 나는 이런 식으로 뭔가를 가지고 있지만 제대로 작동하지 않습니다 :

public static String DateFormat(String myDate){ 
     SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
     try{ 
      Date formattedDate = formatter.parse(myDate); 
      return formattedDate.toString(); 
     }catch(Exception e){ 
      e.printStackTrace(); 
      return null; 
     } 
    } 

내가 포맷() 함수 VB는이 유사 아무것도 찾을 수 없기 때문에, 그것을 내가 원하는 형식을 만드는 방법을 모르겠습니다. 미리 감사드립니다.

+2

잘하면 [데이터 형식 사용자 정의] (http://docs.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html), 도움이 될 수도 있습니다 :-) –

+0

나는 Java가 아닙니다. .NET에서는 출력 형식을 정확하게 결정할 수 있도록 날짜 형식의'toString()'메서드에 "날짜 형식"인수를 전달할 수 있습니다. –

+1

[Java에서 현재 연도의 마지막 두 자리 숫자를 표시] 가능한 중복 (http://stackoverflow.com/questions/20070258/diplaying-the-last-two-digits-of-the-current-year-in- java) 및 [this] (http://stackoverflow.com/q/5143763/642706) 및 [this] (http://stackoverflow.com/q/251535/642706) 및 [this] (http : // stackoverflow .com/q/9034766/642706) –

답변

2

이 시도 :

public static String DateFormat(String myDate) throws ParseException { 
    SimpleDateFormat inFormat = new SimpleDateFormat("MM/dd/yyyy"); 
    SimpleDateFormat outFormat = new SimpleDateFormat("MM/dd/yy");  

    Date parsedInDate = inFormat.parse(myDate); 
    return outFormat.format(parsedInDate); 
    } 

은 시작에서, 우리는 우리가 입력 문자열에서 날짜 객체를 생성, 두 날짜 포매터를 선언하고 마지막에 우리는 새로운 형식의 문자열을 생산하고 있습니다.

+0

이것은 전역 변수를 사용하지 않고 함수에 대한 필자의 요구 사항을 정확하게 충족시킵니다. 고마워요 xwid. –

+0

이것은 본질적으로 나의 대답입니다. 여기에서는 상수 DateFormat (s)에 대한 모든 메서드 호출에서 임시 개체를 인스턴스화합니다. –

2

나는 당신의 질문을 이해한다면, 당신은 SimpleDateFormat (들)의 한 쌍을 사용할 수

private static final String formatIn = "MM/dd/yyyy"; 
private static final String formatOut = "MM/dd/yy"; 
private static final DateFormat sdfIn = new SimpleDateFormat(
    formatIn); 
private static final DateFormat sdfOut = new SimpleDateFormat(
    formatOut); 

public static String formatDateString(String dateIn) 
    throws ParseException { 
    return sdfOut.format(sdfIn.parse(dateIn)); 
} 

public static void main(String[] args) { 
    try { 
    System.out.println(formatDateString("07/15/2014")); 
    } catch (ParseException e) { 
    e.printStackTrace(); 
    } 
} 

출력

07/15/14 
+0

이것은 내가 필요한 것입니다. 나는 그것을 잘못 파싱했다. 도와 주셔서 정말 감사합니다. –

0

SimpleDateFormat의 서로 다른 형식의 숫자에 걸립니다. 난 그냥 새로운 형식을 적용 할 필요가 이미 내장되어 원하는과 같이 액세스 할 수있는 형식으로 ...

Date date = new Date(); 

Format formatter = new SimpleDateFormat("MM/dd/yy"); 
String s = formatter.format(date); 
System.out.println(s); 
0

당신은 기본적으로 거의있어 생각합니다.

public static String DateFormat(String myDate){ 
    SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
    try{ 
     Date date = formatter.parse(myDate); 
     formatter.applyPattern("MM/dd/yy"); 
     return formatter.format(date); 
    }catch(Exception e){ 
     e.printStackTrace(); 
     return null; 
    } 
} 
관련 문제