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 文字です。

私の考えは、文字列をループして文字/が表示されるタイミングを見つけることでしたが、もっと良い方法があるように感じます。

これを達成するための最良の方法は何ですか?

4

4 に答える 4

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]));
于 2013-02-14T00:51:02.000 に答える
0

`String.split("/") を使用

各トークンの文字列の配列を返し、それぞれを整数に解析して日付オブジェクトを作成するだけです。

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);
}
于 2013-02-14T00:45:48.517 に答える
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;
        }
    }
}
于 2013-02-14T01:10:43.503 に答える
-1

おそらく、文字列クラスのメソッドを使用して部分文字列を取得するか、ある種の文字列トークナイザーを使用できます (私は Java をよく知らないので、正確な名前はわかりません)。しかし、「フードの下」では、これらの関数も文字列を反復処理する必要があり、それを回避する方法はありません。だからあなたの考えは良いと思います。それは、Java に組み込まれている可能性をマスターしたいのか、それともすぐにやりたいだけなのかの問題です :)

于 2013-02-14T00:51:38.323 に答える