java用正则表达式判断字符串是不是时间

Python022

java用正则表达式判断字符串是不是时间,第1张

具体代码如下:

1 public static boolean isValidDate(String str) {

2 boolean convertSuccess=true

3  // 指定日期格式为四位年/两位月份/两位日期,注意yyyy/MM/dd区分大小写;

4SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm")

5try {

6  // 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01

7 format.setLenient(false)

8 format.parse(str)

9} catch (ParseException e) {

10 // e.printStackTrace()

11 // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对

12convertSuccess=false

13}

14return convertSuccess

提取以后还要处理一下

看一下下边的例子。结果

2012-2-14

2015-13-35 (这样非法的就需要你自己来处理了。)

--------------------------------------------------------------------------------

import java.util.regex.Matcher

import java.util.regex.Pattern

public class Other {

public static void main(String[] args) {

String str = "本页面最后修订于2012年2月14日 (星期二) 2015-13/35日 11:29。2012-135/14<br /></li>"

Pattern p = Pattern

.compile("[0-9]{4}[年|\\-|/][0-9]{1,2}[月|\\-|/][0-9]{1,2}")

Matcher m = p.matcher(str)

while (m.find()) {

if (!"".equals(m.group())) {

String date = m.group()

date = date.replaceAll("年", "-")

date = date.replaceAll("月", "-")

date = date.replaceAll("/", "-")

System.out.println(date)

}

}

}

}

你这个很简单,不需要转成long再比较,java.util.Date已经有after()、before()等方法来比较两个时间的先后顺序了。示例代码如下:

/**

 * 检测一个时间是否在一个时间区间之内

 * @param start 有效的开始时间

 * @param end 有效的结束时间

 * @param check 待检测时间

 * @return

 */

public boolean checkValidDay(Date start,Date end,Date check){

if(check.after(start) && check.before(end)){

return true

}else{

return false

}

}

@Test

public void test() throws ParseException{

String validStartDayStr = "20170501" //有效的开始时间

String validEndDayStr = "20171231" //有效的结束时间

String testDay1Str = "20160101" //测试时间1

String testDay2Str = "20170720" //测试时间2

String testDay3Str = "20181230" //测试时间3

DateFormat format = new SimpleDateFormat("yyyyMMdd")

Date startDay = format.parse(validStartDayStr)

Date endDay = format.parse(validEndDayStr)

Date testDay1 = format.parse(testDay1Str)

Date testDay2 = format.parse(testDay2Str)

Date testDay3 = format.parse(testDay3Str)

System.out.println(checkValidDay(startDay, endDay, testDay1))

System.out.println(checkValidDay(startDay, endDay, testDay2))

System.out.println(checkValidDay(startDay, endDay, testDay3))

}

测试代码输出如下:

false

true

false