java中怎么做到判断输入的日期是否合法

已经有一个字符串,比如2008-1-1,然后我要修改它,修改后要判断它是不是****-**-**格式的,而且要日期格式的(月份不能大于12,还要考虑6月是30天,7月是31天,2月闰年29,非闰年28...这种东西), �0�2请问这怎么弄呢?�0�2

Java为了支持多语言,没有固定的日期格式。你需要根据自己的需要指定日期格式,然后用DateFormat类或者SimpleDateFormat类来判断是否是正确的日期格式。下面的例子供参考。更详细的内容(比如yyyy,MM,dd各代表什么)可以参考javadoc。

public class DateUtil
{
private static final SimpleDateFormat dateFormat = null;
static
{
// 指定日期格式为四位年/两位月份/两位日期,注意yyyy/MM/dd区分大小写;
dateFormat = new SimpleDateFormat("yyyy/MM/dd");
// 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01
dateFormat.setLenient(false);
}

public static boolean isValidDate(String s)
{
try
{
dateFormat.parse(s);
return true;
}
catch (Exception e)
{
// 如果throw java.text.ParseException或者NullPointerException,就说明格式不对
return false;
}
}

// 下面这个方法则可以将一个日期按照你指定的格式输出
public static String formatDate(Date d)
{
return dateFormat.format(d);
}

}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-02-16
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) ;
}
}本回答被网友采纳
第2个回答  2013-08-09
应该是,你看看网,不就一目了然。

java中怎么做到判断输入的日期是否合法
\/\/ 指定日期格式为四位年\/两位月份\/两位日期,注意yyyy\/MM\/dd区分大小写;dateFormat = new SimpleDateFormat("yyyy\/MM\/dd");\/\/ 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007\/02\/29会被接受,并转换成2007\/03\/01 dateFormat.setLenient(false);} public static boolean ...

使用Java如何验证所以日期是否正确?
你需要根据自己的需要指定日期格式,然后用DateFormat类或者SimpleDateFormat类来判断是否是正确的日期格式。下面的例子供参考。更详细的内容(比如yyyy,MM,dd各代表什么)可以参考javadoc。\\x0d\\x0a\\x0d\\x0apublic class DateUtil\\x0d\\x0a{\\x0d\\x0a private static final SimpleDateFormat da...

java中如何判断输入的日期是否合法
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...

java如何对生日(yyyymmdd)进行合法性判断?
支持 yyyy-MM-dd ,yyyyMMdd MM-dd-yyyy ,yyyy年MM月dd日 isBirthday 判断输入的字符串是否是合法的生日 生日不能大于当前日期 \/ public static boolean isBirthday(String birthday){ \/\/定义需要过滤的条件,可以将你期望的日期格式添加到数组中 String[] formats={ "yyyy-MM-dd","yyyyMMdd",...

java输入字符串日期如何判断格式是否正确?
先用try,catch模块,在模块里用Date.parse("日期字符串")这么试试,赞同就采纳吧

java怎么判断输入的字符串是否为时间格式
通过正则表达式判断。代码如下:public boolean isDate(String date) { String path="\\\\d{4}-\\\\d{2}-\\\\d{2}";\/\/定义匹配规则 Pattern p=Pattern.compile(path);\/\/实例化Pattern Matcher m=p.matcher(date);\/\/验证字符串内容是否合法 if(m.matches()){ return true;} return false;} ...

java 判定日期是不是符合yyyy
如果是初学的逻辑判断是不是4个字符长度的话,看你是什么格式写的日期例如(1999-05-05,还是以斜杠区分 )如果是上面的这样写的话,就用indexOf 和 substring方法 String aa="1999-05-22";int index=aa.indexOf("-");String year=aa.substring(0,index);System.out.println(year);if(year....

java如何判断是否为有效的年月日
年 大于 1900 月 大于0,小于13 日 if(月=1,3,5,7,8,10,12){日大于1小于等于31};else if{月=4,6,9,11}{日大于1小于等于30};else if(年是润年){日大于1小于等于29};else {日大于1小于等于28} 闰年的判断公式如下:能被4整除且不能被100整除(year%4==0&&year&&100!=0)...

使用java判断输入身份证号位数是否正确?判断输入是否有效?
public static void getString(){\\x0d\\x0a String a,b;\\x0d\\x0a while (true) {\\x0d\\x0a Scanner input = new Scanner(System.in);\\x0d\\x0a System.out.println("请输入您的18位身份证号码!!");\\x0d\\x0a a = (String) input.next();\\x0d\\x0a if (a...

java date这类
Java为了支持多语言,没有固定的日期格式。你需要根据自己的需要指定日期格式,然后用DateFormat类或者SimpleDateFormat类来判断是否是正确的日期格式。下面的例子供参考。更详细的内容(比如yyyy,MM,dd各代表什么)可以参考javadoc。public class DateUtil { private static final SimpleDateFormat dateFormat =...

相似回答