码迷,mamicode.com
首页 > 编程语言 > 详细

java有关时间不合法查询的问题

时间:2020-01-02 18:28:20      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:imp   比较   static   ESS   exp   ceshi   int   sda   mpi   

问题:假设前台传过来一个不合法的时间,如2019-02-31,有哪些处理方式。

一:可以采用SimpleDateFormat进行校验,然后返回前台“日期不合法”之类的提示

import java.text.SimpleDateFormat;
 
class Main {
	public static void main(String[] args) {
		String str1="2020-2-1";
		String str2="2000-2-30";
		System.out.println(check(str1));
		System.out.println(check(str2));
	}
	static boolean check (String str) {
		SimpleDateFormat date=new SimpleDateFormat("yyyy-MM-dd");
		try {
			date.setLenient(false);
			date.parse(str);
		}
		catch (Exception e) {
			return false;
		}
		return true;
	}
}

 二:可进行正则表达式进行验证是否正确,如下:

public boolean isDate(String date){
      //判断日期格式和范围
      String rexp = "^((\\d{2}(([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])))))|(\\d{2}(([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;
}

 三:还可直接在sql语句中利用DATE_FORMAT,将时间字段转换成字符串进行比较(可实现正常查询),但缺点是数据量大时查询比较慢,

select *  from tb_ceshi_data where DATE_FORMAT(business_time, ‘%Y-%m-%d‘)>‘2019-2-31‘

java有关时间不合法查询的问题

标签:imp   比较   static   ESS   exp   ceshi   int   sda   mpi   

原文地址:https://www.cnblogs.com/xbdnx-hj/p/12134269.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!