判断日期合法性
2016-03-18 13:28
435 查看
这边写一个判断一个日期的合法性,比如是没有2008-02-31,aaaa-03-89等都不合法的,这个Datetil在java中可以解决这样的一个问题,如果还有缺陷请相告,感谢!
import java.util.*;
import java.util.regex.*;
import java.text.*;
/** 这个是按照楼主的描述使用通过判断字符验证时间合法性 */
public class DateUtils2 {
private static void test(String stringdate){
System.out.println("输入[" + stringdate + "]是否合法:" + validate(stringdate));
}
/** 判断主方法 */
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) ;
}
}
主函数这边直接这样调用就可以测试日期的合法性:
//测试代码 begin
public static void main(String[] s){
//以下是测试代码
DateUtils2.test("20099-1-1");
DateUtils2.test("20099-100-1");
DateUtils2.test("20099-1-100");
DateUtils2.test("2009-1-1");
DateUtils2.test("2009-1-31");
DateUtils2.test("2009-2-28");
DateUtils2.test("2009-2-29");
DateUtils2.test("2008-2-29");
}
import java.util.*;
import java.util.regex.*;
import java.text.*;
/** 这个是按照楼主的描述使用通过判断字符验证时间合法性 */
public class DateUtils2 {
private static void test(String stringdate){
System.out.println("输入[" + stringdate + "]是否合法:" + validate(stringdate));
}
/** 判断主方法 */
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) ;
}
}
主函数这边直接这样调用就可以测试日期的合法性:
//测试代码 begin
public static void main(String[] s){
//以下是测试代码
DateUtils2.test("20099-1-1");
DateUtils2.test("20099-100-1");
DateUtils2.test("20099-1-100");
DateUtils2.test("2009-1-1");
DateUtils2.test("2009-1-31");
DateUtils2.test("2009-2-28");
DateUtils2.test("2009-2-29");
DateUtils2.test("2008-2-29");
}
相关文章推荐
- java根据当前日期+指定天数(月份...)得到相应日期,计算两日期之差
- Java日期格式转换-yyyy-MM-dd HH:mm:ss转换为yyyy-MM-dd
- Java获取最近一周的时间
- 智渔课堂官方免费教程二十三:Java常用类之日期类 Date类 SimpleDateFormat类 Calendar类
- Java日期简化工具Joda-Time
- java 日期相关Date、SimpleDateFormat、Calendar区分和使用
- Java取一年有多少周、某周的第一天和最后一天
- Java中一年有几周、周的计算
- oracle运用(七) oracle中的日期查询
- JAVA基础(33) java日期比较,日期计算
- JDBC中日期时间的处理
- java基础语法(五)
- JAVA-日期类
- 四、java常见日期函数
- Java时间格式转换大
- java 计算两个日期相差了年份或者月份
- Java transient关键字使用小记
- Java accessible方法
- java基础俄罗斯方块
- Java回调机制解析