Java 在一个字符串中标识数字

Java 在一个字符串中标识数字,java,methods,Java,Methods,我用这个方法来获得生日,但我想知道我是否能在一个字符串中识别月份和天数的数字 比如说 930421是正确的 931360不正确 public void setFirst(String firstn, int y, int m,int d) { first = firstn; if (first.length() == 6){ System.out.println("Your birthday is :" +first); }else {

我用这个方法来获得生日,但我想知道我是否能在一个字符串中识别月份和天数的数字

比如说

930421是正确的
931360不正确

public void setFirst(String firstn, int y, int m,int d) {
    first = firstn;
    if (first.length() == 6){
        System.out.println("Your birthday is :" +first);

    }else {
        System.out.println("error");
    }
}

假设您的日期格式是yy-mm-dd,您可以:(简单但易于实现的解决方案)

1) 使用
String.substring
获取所需的字符串段(例如,yy的前两位数字)

2) 使用
integer.parseInt

3) 并对照范围检查它们(例如,对于yy,它可能在20到99之间)


请注意YY是一个非常容易出错的表示(例如1910和2010以相同的方式表示),所以你应该考虑使用YYYY代替。

< P>假设你的日期格式是YY MM DD,你可以:(头脑简单但容易实现的解决方案)

1) 使用
String.substring
获取所需的字符串段(例如,yy的前两位数字)

2) 使用
integer.parseInt

3) 并对照范围检查它们(例如,对于yy,它可能在20到99之间)

请注意YY是一个非常容易出错的表示(例如,1910和2010以相同的方式表示),因此您应该考虑使用YYYY。

< P>可以使用诸如<代码> YYMLDD 之类的模式。确保使用
setLenient(false)
将解析器设置为“严格”,这样它实际上会在无效日期引发异常

SimpleDateFormat format = new SimpleDateFormat("yyMMdd");
format.setLenient(false);
例如:

System.out.println(format.parse("930421"));
System.out.println(format.parse("931360"));
输出:

Wed Apr 21 00:00:00 CEST 1993
Exception in thread "main" java.text.ParseException: Unparseable date: "931360"
    at java.text.DateFormat.parse(DateFormat.java:366)
    at Test.main(Test.java:12)
您可以这样使用它:

try {
    Date date = format.parse(dateString);
    System.out.println("Your birthday is " + date);
} catch (ParseException e) {
    System.out.println("That's not a date");
}
您可以与模式一起使用,例如
yyMMdd
。确保使用
setLenient(false)
将解析器设置为“严格”,这样它实际上会在无效日期引发异常

SimpleDateFormat format = new SimpleDateFormat("yyMMdd");
format.setLenient(false);
例如:

System.out.println(format.parse("930421"));
System.out.println(format.parse("931360"));
输出:

Wed Apr 21 00:00:00 CEST 1993
Exception in thread "main" java.text.ParseException: Unparseable date: "931360"
    at java.text.DateFormat.parse(DateFormat.java:366)
    at Test.main(Test.java:12)
您可以这样使用它:

try {
    Date date = format.parse(dateString);
    System.out.println("Your birthday is " + date);
} catch (ParseException e) {
    System.out.println("That's not a date");
}
这是你的答案。 它按照您的期望工作:)

静态布尔值dob=true;
公共静态void main(字符串[]args){
setFirst(“931360”,0,0,0);
setFirst(“930421”,0,0,0);
}
公共静态void setFirst(字符串firstn、int y、int m、int d){
字符串first=firstn;
if(first.length()==6){
y=Integer.parseInt(第一个.substring(0,2));
如果(y99)
{dob=false;}
m=整数.parseInt(第一个.substring(2,4));
如果(m12)
{dob=false;}
d=整数.parseInt(第一个.substring(4,6));
如果(d31)
{dob=false;}
if(dob)
{System.out.println(“您的生日是:+第一次);}
}如果(!dob){
System.out.println(“错误”);
}
}
这是你的答案。 它按照您的期望工作:)

静态布尔值dob=true;
公共静态void main(字符串[]args){
setFirst(“931360”,0,0,0);
setFirst(“930421”,0,0,0);
}
公共静态void setFirst(字符串firstn、int y、int m、int d){
字符串first=firstn;
if(first.length()==6){
y=Integer.parseInt(第一个.substring(0,2));
如果(y99)
{dob=false;}
m=整数.parseInt(第一个.substring(2,4));
如果(m12)
{dob=false;}
d=整数.parseInt(第一个.substring(4,6));
如果(d31)
{dob=false;}
if(dob)
{System.out.println(“您的生日是:+第一次);}
}如果(!dob){
System.out.println(“错误”);
}
}

在此查看SimpleDateFormat.String.substring和Integer.parseInt是否有用如果下面的某个答案解决了您的问题,请接受它-请参阅此处查看SimpleDateFormat.String.substring和Integer.parseInt是否有用如果下面的某个答案解决了您的问题,请接受它-请参阅附录:注意,此方法还检查一个月内允许的天数(28到31天)并正确处理闰年。附录:注意,此方法还检查一个月内允许的天数(28到31天)并正确处理闰年。