java中如何判断输入的日期是否合法?
比如2008-1-1,然后我要修改它,修改后要判断它是不是****-**-**格式的,而且要日期格式的(月份不能大于12,还要考虑6月是30天,7月是31天,2月闰年29...
比如2008-1-1,然后我要修改它,修改后要判断它是不是****-**-**格式的,而且要日期格式的(月份不能大于12,还要考虑6月是30天,7月是31天,2月闰年29,非闰年28...这种东西), 请问这怎么弄呢?
展开
推荐于2017-05-26
展开全部
import java.util.*;
import java.util.regex.*;
import java.text.*;
/** 这个是按照楼主的描述使用通过判断字符验证时间合法性 */
public class DateUtils2 {
//测试代码 begin
public static void main(String[] s){
//以下是测试代码
test("20099-1-1");
test("20099-100-1");
test("20099-1-100");
test("2009-1-1");
test("2009-1-31");
test("2009-2-28");
test("2009-2-29");
test("2008-2-29");
}
private static void test(String stringdate){
System.out.println("输入[" + stringdate + "]是否合法:" + validate(stringdate));
}
//测试代码 end
//==
/** 判断主方法 */
public static boolean validate(String dateString){
//使用正则表达式 测试 字符 符合 dddd-dd-dd 的格式(d表示数字)
Pattern p = Pattern.compile("\\d{4}+[-]\\d{1,2}+[-]\\d{1,2}+");
Matcher m = p.matcher(dateString);
if(!m.matches()){ return false;}
//得到年月日
String[] array = dateString.split("-");
int year = Integer.valueOf(array[0]);
int month = Integer.valueOf(array[1]);
int day = Integer.valueOf(array[2]);
if(month<1 || month>12){ return false;}
int[] monthLengths = new int[]{0, 31, -1, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if(isLeapYear(year)){
monthLengths[2] = 29;
}else{
monthLengths[2] = 28;
}
int monthLength = monthLengths[month];
if(day<1 || day>monthLength){
return false;
}
return true;
}
/** 是否是闰年 */
private static boolean isLeapYear(int year){
return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ;
}
}
copy的 刚好和你的问题一样~~~~~~~
import java.util.regex.*;
import java.text.*;
/** 这个是按照楼主的描述使用通过判断字符验证时间合法性 */
public class DateUtils2 {
//测试代码 begin
public static void main(String[] s){
//以下是测试代码
test("20099-1-1");
test("20099-100-1");
test("20099-1-100");
test("2009-1-1");
test("2009-1-31");
test("2009-2-28");
test("2009-2-29");
test("2008-2-29");
}
private static void test(String stringdate){
System.out.println("输入[" + stringdate + "]是否合法:" + validate(stringdate));
}
//测试代码 end
//==
/** 判断主方法 */
public static boolean validate(String dateString){
//使用正则表达式 测试 字符 符合 dddd-dd-dd 的格式(d表示数字)
Pattern p = Pattern.compile("\\d{4}+[-]\\d{1,2}+[-]\\d{1,2}+");
Matcher m = p.matcher(dateString);
if(!m.matches()){ return false;}
//得到年月日
String[] array = dateString.split("-");
int year = Integer.valueOf(array[0]);
int month = Integer.valueOf(array[1]);
int day = Integer.valueOf(array[2]);
if(month<1 || month>12){ return false;}
int[] monthLengths = new int[]{0, 31, -1, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if(isLeapYear(year)){
monthLengths[2] = 29;
}else{
monthLengths[2] = 28;
}
int monthLength = monthLengths[month];
if(day<1 || day>monthLength){
return false;
}
return true;
}
/** 是否是闰年 */
private static boolean isLeapYear(int year){
return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ;
}
}
copy的 刚好和你的问题一样~~~~~~~
2013-09-20
展开全部
直接用一个JS的日历代码就可以了
没有你想象的哪么麻烦,日历代码添进来的日期都是合法的
没有你想象的哪么麻烦,日历代码添进来的日期都是合法的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-20
展开全部
如果你是在jsp中要输入日期的话,还是用JS的日历代码吧,方便又实用。我在做页面的时候都是使用这样的方法的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询