Java 将字符串转换为表示日期的整数

Java 将字符串转换为表示日期的整数,java,Java,我需要将表示日期的字符串转换为日期 日期是这样构造的: 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 { Sy

我需要将表示日期的字符串转换为日期

日期是这样构造的:

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个字符

我的想法是在字符串中循环查找字符
/
的出现时间,但我觉得有更好的方法

实现这一点的最佳方法是什么?

使用'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);
}
你可以这样做:

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]));

也许您可以使用string类的方法来获取子字符串,或者使用某种字符串标记器(我不太懂java,所以无法帮助您确定确切的名称)。 但是“幕后”这些函数也必须遍历字符串,没有办法绕过它。
我认为你的想法很好。这只是一个问题,您是想掌握java中内置的可能性,还是只想快速完成:)

也许这段代码可以帮助您

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;
        }
    }
}

Java中已经有一个
Date
类(和一个
DateFormat
来完成您需要的操作)。我建议不要重新发明轮子,或者至少不要使用相同的名称。我的问题措辞错误:我需要创建另一个将日期作为字符串的构造函数。我尝试了这个方法,但它给了我一个错误:“构造函数调用必须是构造函数中的第一条语句。”这是我的错误:
public Date(String s){String[]dateStrings=s.split(“/”);m=Integer.parseInt(dateStrings[0]);d=Integer.parseInt(dateStrings[1]);y=Integer.parseInt(dateStrings[2]);这(m,d,y);
如果可能,我建议使用静态工厂方法。