我需要一个用布尔值检查日期的函数。我有一个存储一个日期的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];
}
我该怎么办?
答案 0 :(得分:3)
重新发明轮子毫无意义。
使用Joda Time中的java.text.SimpleDateFormat
或DateTimeFormatter
。指定适当的格式,然后尝试解析它 - 如果它没有抛出异常,它就是有效的。
如果这只是作业,那么你应该将字符串解析成整数 - 你还要怎样处理闰年等事情呢?
您可以使用正则表达式来执行粗略验证,但对于“深度”验证,您可以更好地解析字符串 - 或者最好使用现有库,如前所述。
答案 1 :(得分:1)
使用DateFormat.parse。如果它抛出一个ParseException
你知道它不是一个有效的日期。
答案 2 :(得分:1)
尝试使用SimpleDateFormat。请参阅http://www.dreamincode.net/forums/topic/14886-date-validation-using-simpledateformat/。
答案 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;
}