0

我需要从接收字符串变量的构造函数中验证日期 mm/dd。我尝试了几种方法都没有运气。最后我尝试将字符串转换为 ascii 并以这种方式验证,但也不起作用:

public Dated(String dateStr)
{
 this.dateStr = dateStr;
 for (int i = 0; i < dateStr.length(); i++)
 {
  char c = dateStr.charAt(i);
  asciiValues = (int) c;      // change each string character to ASCII value

 }

}

public void display()
{
    System.out.println(asciiValues);
}
4

1 回答 1

0

据我所知,您在解析字符串值时遇到了麻烦。正确的。

在 java 中,我们有很多可用的工具来验证这些事情。

我将使用SimpleDateFormat可以验证日期并将其转换为的实用程序DateString

public class Dated{

  private SimpleDateFormat sdf = new SimpleDateFormat("MM/dd") // M --> Month; d--> Day

  public Dated(String dateStr) throws Exception{
    try{
      Date d = sdf.parse(dateStr);
      System.out.println( d );
    } catch (ParseException e) {
      // you can throw that exception just to 
      // avoid creating the object of this class
      throw e;
    }
  }
}

但请记住,您没有验证闰年的日期,如@JB Nizet. 您也可以通过验证年份来克服这个问题。

在上面的代码中,如果您通过“02/29”,您将获得 3 月 1 日的日期。这是不正确的日期,因为 1970 年不是闰年。

所以我也会在我的日期验证中包含年份。

要添加年份,您可以将 SimpleDateFormat 更改如下。

private SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); // y --> Year
于 2012-07-14T07:05:24.277 回答