将String转换为表示日期的整数

时间:2013-02-14 00:42:22

标签: 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 {
          System.out.println("Error: not a valid date");
          System.exit(0);
      }
  }

需要转换为此日期对象的字符串格式为:

"month/day/year"

月份是1或2个字符,日期是1或2个字符,年份可以是1到4个字符。

我的想法是遍历字符串并找到字符/何时出现,但我觉得有更好的方法可以解决它。

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

4 个答案:

答案 0 :(得分: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)

Use`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);
}

答案 2 :(得分: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;
        }
    }
}

答案 3 :(得分:-1)

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