package com.jkcredit.invoice.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.regex.*; /** * @description: 车牌颜色校验 * @author: sunzhaoning * @create: 2019-05-30 17:24 * @version: V1.0 **/ public class PlateCheckUtil { /** * 利用正则表达式判断字符串是否是数字 * @param str * @return * */ public static boolean isNumeric(String str){ return Pattern.matches("^[0-6]|9\\d{1}$",str); } /** * 1、传统车牌 * 第1位为省份简称(汉字),第二位为发牌机关代号(A-Z的字母)第3到第7位为序号(由字母或数字组成,但不存在字母I和O,防止和数字1、0混淆,另外最后一位可能是“挂学警港澳使领”中的一个汉字)。 * * 2、新能源车牌 * 第1位和第2位与传统车牌一致,第3到第8位为序号(比传统车牌多一位)。新能源车牌的序号规则如下: * * 小型车:第1位只能是字母D或F,第2为可以是数字或字母,第3到6位必须是数字。 * * 大型车:第1位到第5位必须是数字,第6位只能是字母D或F。 * @param plateNumber * @return */ public static boolean isPlateNumber(String plateNumber) { String plateNumberRegex = "^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$"; return Pattern.matches(plateNumberRegex,plateNumber); } public static boolean isNowTime(String time,Integer day) { //设置时间格式 String DATE_FORMAT_YMDHMS_WITH_T = "yyyy-MM-dd HH:mm:ss"; SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT_YMDHMS_WITH_T); Date date1; //获取当前时间 Date date = new Date(); try { //将传入时间转化为date类型 date1 = format.parse(time); } catch (ParseException e) { return Boolean.FALSE; } //计算时间差 Long atTime = (date.getTime() - date1.getTime()) / (24 * 60 * 60 * 1000); //如当前时间减去传入时间大于等于传入day则返回flase if (atTime <= day && atTime>=0) { return Boolean.TRUE; } else { return Boolean.FALSE; } } public static boolean isBefoTime(String time,Integer day) { //设置时间格式 String DATE_FORMAT_YMDHMS_WITH_T = "yyyy-MM-dd HH:mm:ss"; SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT_YMDHMS_WITH_T); Date date1; //获取当前时间 Date date = new Date(); try { //将传入时间转化为date类型 date1 = format.parse(time); } catch (ParseException e) { return Boolean.FALSE; } //计算时间差 Long atTime = (date.getTime() - date1.getTime()) / (24 * 60 * 60 * 1000); //如当前时间减去传入时间大于等于传入day则返回flase if (atTime >= day && atTime>=0) { return Boolean.TRUE; } else { return Boolean.FALSE; } } public static void main(String[] args) { // System.out.println(isNumeric("6")); // System.out.println(isBefoTime("2019-05-27T00:00:00",19)); System.out.println(isPlateNumber("粤BD58041")); } }