2013-02-14 2 views
0

날짜를 나타내는 문자열을 날짜로 변환해야합니다.문자열을 날짜를 나타내는 정수로 변환하십시오.

날짜는 다음과 같이 구성된다 :

private int m; 
private int d; 
private int y; 

public Date(int month, int day, int year) { 
     if (isValidDate(month, day, year)) { 
      m = month; 
      d = day; 
      y = year; 
     } else { 
      System.out.println("Error: not a valid date"); 
      System.exit(0); 
     } 
    } 

이 날짜 객체로 변환 할 필요가있는 문자열 형식으로되어 있습니다 :

"month/day/year" 

달 1 개 또는 2 문자의입니다 일은 1 또는 2 자이며 연도는 1 - 4 자입니다.

내 생각은 문자열을 반복하여 문자 /이 나타날 때 찾아야했지만, 더 좋은 방법이 있다고 생각했습니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

+0

https://www.google.com/search?q=date+format+java –

+0

이미이있는'자바 Date' 클래스 (그리고'DateFormat' 당신이 무엇을해야합니다). 나는 바퀴를 재발 명하지 않거나 최소한 같은 이름을 사용하지 말 것을 제안합니다. – madth3

답변

0

Use`String.split ("/")

그것은 각 토큰에 대한 문자열 배열을 반환하고 그냥 정수로 하나 하나를 분석하고

당신 object.` 날짜를 만들어야합니다 DateFormat 클래스도 살펴볼 수 있습니다. 그것은 당신을 위해 문자열을 구문 분석 할 수 있습니다.

편집 :

대신 정적 팩터 리 방법입니다.

public static Date asDate(String s) { 
    String[] dateStrings = s.split("/"); 
    int m = Integer.parseInt(dateStrings[0]); 
    int d = Integer.parseInt(dateStrings[1]); 
    int y = Integer.parseInt(dateStrings[2]); 
    return new Date(m, d, y); 
} 
+0

나는 틀린 질문을했다. 나는 날짜를 문자열로 취하는 또 다른 생성자를 만들어야한다. 나는 이것을 시도했지만 나에게 "constructor 호출은 생성자의 첫 번째 문장이어야한다"라는 오류를 준다. 이것은 내가 가지고있는 것입니다 : 'public Date (String s) { String [] dateStrings = s.split ("/"); m = Integer.parseInt (dateStrings [0]); d = Integer.parseInt (dateStrings [1]); y = Integer.parseInt (dateStrings [2]); this (m, d, y); ' – Jon

+0

가능한 경우 정적 팩토리 메서드를 대신 사용하는 것이 좋습니다. – npearson

1

당신은 너무처럼 작업을 수행 할 수 있습니다

String date = "14/02/2013"; 
String [] splitDate = date.split("/"); 
Date date = new Date(Integer.parseInt(splitDate[0]), 
        Integer.parseInt(splitDate[1]), 
        Integer.parseInt(splitDate[2])); 
-1

어쩌면 당신은 내가 잘 자바를 모른다 (당신의 문자열을 얻을, 또는 스트링 토크 나이의 어떤 종류를 사용하는 문자열 클래스의 방법을 사용할 수 있습니다 , 그래서 정확한 이름으로 당신을 도울 수 없다). "두포 아래에서"이러한 함수도 문자열을 반복해야합니다. 주위에는 경로가 없습니다. 당신의 아이디어가 좋을 것 같아요. 당신이 자바의 가능성을 마스터하고 싶다면 단지 문제 일뿐입니다. 아니면 그냥 빨리 끝내고 싶을 수도 있습니다. :)

0

아마도이 코드가 도움이 될 것입니다.

public class TestDate { 

    private int m; 
    private int d; 
    private int y; 

    public static void main(String[] args) { 
     String date = "02/14/2013"; 
     String[] splitDate = date.split("/"); 
     TestDate td = new TestDate(); 
     td.Date(Integer.parseInt(splitDate[0]), 
       Integer.parseInt(splitDate[1]), 
       Integer.parseInt(splitDate[2])); 
     System.out.println(td.m +"/"+td.d+ "/"+td.y); 
    } 

    public void Date(int month, int day, int year) { 
     if (isValidDate(month, day, year)) { 
      m = month; 
      d = day; 
      y = year; 
     } else { 
      System.out.println("Error: not a valid date"); 
      System.exit(0); 
     } 
    } 

    private static boolean isValidDate(int month, int day, int year) { 
     String stDate = month + "/" + day + "/" + year; 
     SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); 
     sdf.setLenient(false); 
     try { 
      sdf.parse(stDate); 
      return true; 
     } catch (ParseException e) { 
      e.printStackTrace(); 
      return false; 
     } 
    } 
} 
관련 문제