我需要在java中编写validDate()函数

时间:2011-10-31 18:59:20

标签: java string

我需要一个用布尔值检查日期的函数。我有一个存储一个日期的String变量。我存储的日期格式是“yyyy / mm / dd”。我需要检查这个变量是否是一个有效的日期。如果日期格式为true,则函数需要在java中返回true。但我需要一些东西。我不应该使用将字符串转换为整数。我写了一些东西。

public boolean trueDate(String date){
    String[] temp;
    temp = date.split("/");
    String year = temp[0];
    String mounth = temp[1];
    String day = temp[2];

}

我该怎么办?

5 个答案:

答案 0 :(得分:3)

重新发明轮子毫无意义。

使用Joda Time中的java.text.SimpleDateFormatDateTimeFormatter。指定适当的格式,然后尝试解析它 - 如果它没有抛出异常,它就是有效的。

如果这只是作业,那么你应该将字符串解析成整数 - 你还要怎样处理闰年等事情呢?

您可以使用正则表达式来执行粗略验证,但对于“深度”验证,您可以更好地解析字符串 - 或者最好使用现有库,如前所述。

答案 1 :(得分:1)

使用DateFormat.parse。如果它抛出一个ParseException你知道它不是一个有效的日期。

答案 2 :(得分:1)

答案 3 :(得分:0)

SimpleDateFormat是内置的Java方式,可以满足您的需求。它是经过验证的。许多网站都有示例 - 这里是一个:http://javatechniques.com/blog/dateformat-and-simpledateformat-examples/

答案 4 :(得分:-2)

public boolean trueDate(String date){
  String nums = "0123456789";
  String[] temp;
  temp = date.split("/");
  String year = temp[0];
  String month = temp[1];
  String day = temp[2];

  bool isValid = true;
  for(int i = 0; i < year.length(); i++)
  {
    if(nums.indexOf(year.charAt(i)) == -1)
    {
      isValid = false;
    }
  }

  for(int i = 0; i < month.length(); i++)
  {
    if(nums.indexOf(month.charAt(i)) == -1)
    {
      isValid = false;
    }
  }

  for(int i = 0; i < day.length(); i++)
  {
    if(nums.indexOf(day.charAt(i)) == -1)
    {
      isValid = false;
    }
  }

  return isValid;
}