java判断是不是是日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java判断是不是是日期相关的知识,希望对你有一定的参考价值。

楼主提出的问题有点片面,我的理解是,你是不是想判断字符串是不是日期格式?如果已经是日期类型,那就不需要判断了,对把。判断给定字符串是不是日期我给你提供两种解决思路,一种是用正则,代码我给你写好了。

public boolean isDate(String date) 
/**
 * 判断日期格式和范围
 */
String rexp = "^((\\\\d2(([02468][048])|([13579][26]))[\\\\-\\\\/\\\\s]?((((0?[13578])|(1[02]))[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])))))|(\\\\d2(([02468][1235679])|([13579][01345789]))[\\\\-\\\\/\\\\s]?((((0?[13578])|(1[02]))[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\\\-\\\\/\\\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";

Pattern pat = Pattern.compile(rexp);

Matcher mat = pat.matcher(date);

boolean dateType = mat.matches();

return dateType;

参数就是你要判断的日期字符串,返回布尔值;

另一种方式就是:玩字符串正则才是王道嘛!希望采纳

public boolean isValidDate(String str) 
boolean convertSuccess = true;
// 指定日期格式为四位年/两位月份/两位日期,注意yyyy/MM/dd区分大小写;
//如果想判断格式为yyyy-MM-dd,需要写成-分隔符的形式
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm");
try 

format.setLenient(false);
format.parse(str);
 catch (ParseException e) 
// e.printStackTrace();
// 如果抛出ParseException或者NullPointerException,就说明格式不对
convertSuccess = false;

return convertSuccess;

推荐使用正则,

参考技术A public class DateUtil

private static final SimpleDateFormat dateFormat = null;
static

dateFormat = new SimpleDateFormat("yyyy/MM/dd");
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;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test2

public static void main(String[] args)

String date_string="201609";
// 利用java中的SimpleDateFormat类,指定日期格式,注意yyyy,MM大小写
// 这里的日期格式要求javaAPI中有详细的描述,不清楚的话可以下载相关API查看
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM");

// SimpleDateFormat format=new SimpleDateFormat("yyyyMM");
// 设置日期转化成功标识
boolean dateflag=true;
// 这里要捕获一下异常信息
try

Date date = format.parse(date_string);
catch (ParseException e)

dateflag=false;
finally
// 成功:true ;失败:false
System.out.println("日期是否满足要求"+dateflag);


参考技术B 以下代码可以判断某个字符串是否是合法的日期(格式为:yyyy/MM/dd HH:mm)

public static boolean isValidDate(String str)
boolean convertSuccess=true;
     // 指定日期格式为四位年/两位月份/两位日期,注意yyyy/MM/dd区分大小写;
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm");
try
     // 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01
format.setLenient(false);
format.parse(str);
catch (ParseException e)
// e.printStackTrace();
// 如果throw java.text.ParseException或者NullPointerException,就说明格式不对
convertSuccess=false;

return convertSuccess;
本回答被提问者和网友采纳

oracle 判断是不是是时间

这里有一个简单判断日期的方法。

其实日期看来很简单,但各国表示各不相同.
1/13/2005
2005.10.25
23-05-2005
等都是日期
这还不包括类似20051225等方式

/*
最初由 jackywood 发布
个人写的一个判断是否是正确日期字符串的函数, 请大家点评

    函数参数 str : 需要转换为日期的字符串, fmt : 日期格式, nls : 日期字符串的语言
   返回值: 类型为date, 如果字符串不符合转换格式的要求或是非法的日期字符串, 返回值为null, 反之, 返回转换后的date值
*/
CREATE OR REPLACE FUNCTION isdate(str varchar2, fmt varchar2 default null, nls varchar2 default null)
 RETURN date
 IS
   v_date date;
   v_fmt varchar2(100) default fmt;
   v_nls varchar2(100) default nls;
 BEGIN
   IF fmt IS NULL THEN
     SELECT value
       INTO v_fmt
       FROM v$nls_parameters
      WHERE parameter='NLS_DATE_FORMAT';
   END IF;
   IF nls IS NULL THEN
     SELECT 'NLS_DATE_LANGUAGE='''||value||''''
       INTO v_nls
       FROM v$nls_parameters
      WHERE parameter='NLS_DATE_LANGUAGE';
   END IF;
   v_date := to_date(str, v_fmt, v_nls);
   RETURN v_date;
   
   EXCEPTION
     WHEN OTHERS THEN
       /*如果你希望看到报错, 就把下面的注释行打开*/
       --raise;
       RETURN NULL;
 END;
 /

参考技术A 这里有一个简单判断日期的方法。
其实日期看来很简单,但各国表示各不相同.
1/13/2005
2005.10.25
23-05-2005
等都是日期
这还不包括类似20051225等方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

/*
最初由 jackywood 发布
个人写的一个判断是否是正确日期字符串的函数, 请大家点评

函数参数 str : 需要转换为日期的字符串, fmt : 日期格式, nls : 日期字符串的语言
<a href="https://www.baidu.com/s?wd=%E8%BF%94%E5%9B%9E%E5%80%BC&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1d9PAF-uWmvuW--ujfvnWwb0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1D4PH64rH6knWRkn1m4rj61Pj0" target="_blank" class="baidu-highlight">返回值</a>: 类型为date, 如果字符串不符合转换格式的要求或是非法的日期字符串, <a href="https://www.baidu.com/s?wd=%E8%BF%94%E5%9B%9E%E5%80%BC&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1d9PAF-uWmvuW--ujfvnWwb0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1D4PH64rH6knWRkn1m4rj61Pj0" target="_blank" class="baidu-highlight">返回值</a>为null, 反之, 返回转换后的date值
*/
CREATE OR REPLACE FUNCTION isdate(str varchar2, fmt varchar2 default null, nls varchar2 default null)
RETURN date
IS
v_date date;
v_fmt varchar2(100) default fmt;
v_nls varchar2(100) default nls;
BEGIN
<a href="https://www.baidu.com/s?wd=IF&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1d9PAF-uWmvuW--ujfvnWwb0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1D4PH64rH6knWRkn1m4rj61Pj0" target="_blank" class="baidu-highlight">IF</a> fmt IS NULL THEN
SELECT value
INTO v_fmt
FROM v$nls_parameters
WHERE parameter='NLS_DATE_FORMAT';
<a href="https://www.baidu.com/s?wd=END&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1d9PAF-uWmvuW--ujfvnWwb0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1D4PH64rH6knWRkn1m4rj61Pj0" target="_blank" class="baidu-highlight">END</a> <a href="https://www.baidu.com/s?wd=IF&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1d9PAF-uWmvuW--ujfvnWwb0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1D4PH64rH6knWRkn1m4rj61Pj0" target="_blank" class="baidu-highlight">IF</a>;
<a href="https://www.baidu.com/s?wd=IF&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1d9PAF-uWmvuW--ujfvnWwb0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1D4PH64rH6knWRkn1m4rj61Pj0" target="_blank" class="baidu-highlight">IF</a> nls IS NULL THEN
SELECT 'NLS_DATE_LANGUAGE='''||value||''''
INTO v_nls
FROM v$nls_parameters
WHERE parameter='NLS_DATE_LANGUAGE';
<a href="https://www.baidu.com/s?wd=END&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1d9PAF-uWmvuW--ujfvnWwb0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1D4PH64rH6knWRkn1m4rj61Pj0" target="_blank" class="baidu-highlight">END</a> IF;
v_date := to_date(str, v_fmt, v_nls);
RETURN v_date;

<a href="https://www.baidu.com/s?wd=EXCEPTION&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1d9PAF-uWmvuW--ujfvnWwb0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1D4PH64rH6knWRkn1m4rj61Pj0" target="_blank" class="baidu-highlight">EXCEPTION</a>
WHEN OTHERS THEN
/*如果你希望看到报错, 就把下面的注释行打开*/
--raise;
RETURN NULL;
<a href="https://www.baidu.com/s?wd=END&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1d9PAF-uWmvuW--ujfvnWwb0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1D4PH64rH6knWRkn1m4rj61Pj0" target="_blank" class="baidu-highlight">END</a>;
/

以上是关于java判断是不是是日期的主要内容,如果未能解决你的问题,请参考以下文章

Java判断日期是不是是本日,本周,本月

java判断日期是不是合法

java 如何判断日期是否节假日

java中如何判断输入的日期是不是合法

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

java 判断某个日期是否今天