Java 在一个字符串中标识数字
我用这个方法来获得生日,但我想知道我是否能在一个字符串中识别月份和天数的数字 比如说 930421是正确的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 {
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天)并正确处理闰年。