荆轲刺秦王
此方法为公共工具类:
package com.lubansoft.customized.framework.utils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author liuyaowei
* @date 2023-02-09 15:43
* @desc
*/
public class NumberUtils {
private static boolean isMatch(String regex, String orginal){
if (orginal == null || orginal.trim().equals("")) {
return false;
}
Pattern pattern = Pattern.compile(regex);
Matcher isNum = pattern.matcher(orginal);
return isNum.matches();
}
/**
* 校验是否是正整数
* @param orginal
*
* Assert.assertTrue(NumberValidationUtils.isPositiveInteger("1"));
* Assert.assertTrue(NumberValidationUtils.isPositiveInteger("+12"));
* Assert.assertTrue(NumberValidationUtils.isPositiveInteger("87653521123567"));
* Assert.assertFalse(NumberValidationUtils.isPositiveInteger("0.1"));
* Assert.assertFalse(NumberValidationUtils.isPositiveInteger("0"));
* Assert.assertFalse(NumberValidationUtils.isPositiveInteger("0123"));
* Assert.assertFalse(NumberValidationUtils.isPositiveInteger("-1"));
* Assert.assertFalse(NumberValidationUtils.isPositiveInteger("-0.1"));
* Assert.assertFalse(NumberValidationUtils.isPositiveInteger("ab"));
* @return
*/
public static boolean isPositiveInteger(String orginal) {
return isMatch("^\\+{0,1}[1-9]\\d*", orginal);
}
/**
* Assert.assertTrue(NumberValidationUtils.isNegativeInteger("-1"));
* Assert.assertTrue(NumberValidationUtils.isNegativeInteger("-87653521123567"));
* Assert.assertFalse(NumberValidationUtils.isNegativeInteger("0.1"));
* Assert.assertFalse(NumberValidationUtils.isNegativeInteger("0"));
* Assert.assertFalse(NumberValidationUtils.isNegativeInteger("0123"));
* Assert.assertFalse(NumberValidationUtils.isNegativeInteger("1"));
* Assert.assertFalse(NumberValidationUtils.isNegativeInteger("-0.1"));
* Assert.assertFalse(NumberValidationUtils.isNegativeInteger("ab"));
* @param orginal
* @return
*/
public static boolean isNegativeInteger(String orginal) {
return isMatch("^-[1-9]\\d*", orginal);
}
/**
* Assert.assertTrue(NumberValidationUtils.isWholeNumber("0"));
* Assert.assertTrue(NumberValidationUtils.isWholeNumber("1"));
* Assert.assertTrue(NumberValidationUtils.isWholeNumber("+12"));
* Assert.assertTrue(NumberValidationUtils.isWholeNumber("8673434231"));
* Assert.assertTrue(NumberValidationUtils.isWholeNumber("-282464334"));
* Assert.assertFalse(NumberValidationUtils.isWholeNumber("0123"));
* Assert.assertFalse(NumberValidationUtils.isWholeNumber("0.1"));
* Assert.assertFalse(NumberValidationUtils.isWholeNumber("-0.1"));
* Assert.assertFalse(NumberValidationUtils.isWholeNumber("ab"));
* @param orginal
* @return
*/
public static boolean isWholeNumber(String orginal) {
return isMatch("[+-]{0,1}0", orginal) || isPositiveInteger(orginal) || isNegativeInteger(orginal);
}
/**
* Assert.assertTrue(NumberValidationUtils.isPositiveDecimal("0.132213"));
* Assert.assertTrue(NumberValidationUtils.isPositiveDecimal("30.00"));
* Assert.assertTrue(NumberValidationUtils.isDecimal("0."));
* Assert.assertTrue(NumberValidationUtils.isPositiveDecimal("+12.0"));
* Assert.assertFalse(NumberValidationUtils.isPositiveDecimal("0123"));
* Assert.assertFalse(NumberValidationUtils.isPositiveDecimal("1"));
* Assert.assertFalse(NumberValidationUtils.isPositiveDecimal("0.0"));
* Assert.assertFalse(NumberValidationUtils.isPositiveDecimal("ab"));
* Assert.assertFalse(NumberValidationUtils.isPositiveDecimal("-1"));
* Assert.assertFalse(NumberValidationUtils.isPositiveDecimal("-0.1"));
* @param orginal
* @return
*/
public static boolean isPositiveDecimal(String orginal){
return isMatch("\\+{0,1}[0]\\.[1-9]*|\\+{0,1}[1-9]\\d*\\.\\d*", orginal);
}
/**
* Assert.assertTrue(NumberValidationUtils.isNegativeDecimal("-0.132213"));
* Assert.assertTrue(NumberValidationUtils.isNegativeDecimal("-1.0"));
* Assert.assertTrue(NumberValidationUtils.isDecimal("-0."));
* Assert.assertFalse(NumberValidationUtils.isNegativeDecimal("1"));
* Assert.assertFalse(NumberValidationUtils.isNegativeDecimal("0"));
* Assert.assertFalse(NumberValidationUtils.isNegativeDecimal("0123"));
* Assert.assertFalse(NumberValidationUtils.isNegativeDecimal("0.0"));
* Assert.assertFalse(NumberValidationUtils.isNegativeDecimal("ab"));
* Assert.assertFalse(NumberValidationUtils.isNegativeDecimal("-1"));
* Assert.assertFalse(NumberValidationUtils.isNegativeDecimal("0.1"));
* @param orginal
* @return
*/
public static boolean isNegativeDecimal(String orginal){
return isMatch("^-[0]\\.[1-9]*|^-[1-9]\\d*\\.\\d*", orginal);
}
/**
* Assert.assertTrue(NumberValidationUtils.isDecimal("0.00"));
* Assert.assertTrue(NumberValidationUtils.isDecimal("+0.0"));
* Assert.assertTrue(NumberValidationUtils.isDecimal("-0.132213"));
* Assert.assertTrue(NumberValidationUtils.isDecimal("0."));
* Assert.assertFalse(NumberValidationUtils.isDecimal("1"));
* Assert.assertFalse(NumberValidationUtils.isDecimal("0123"));
* Assert.assertFalse(NumberValidationUtils.isDecimal("0"));
* Assert.assertFalse(NumberValidationUtils.isDecimal("ab"));
* Assert.assertFalse(NumberValidationUtils.isDecimal("-1"));
* @param orginal
* @return
*/
public static boolean isDecimal(String orginal){
return isMatch("[-+]{0,1}\\d+\\.\\d*|[-+]{0,1}\\d*\\.\\d+", orginal);
}
/**
* Assert.assertTrue(NumberValidationUtils.isRealNumber("-0.234"));
* Assert.assertTrue(NumberValidationUtils.isRealNumber("0.0"));
* Assert.assertTrue(NumberValidationUtils.isRealNumber("1"));
* Assert.assertTrue(NumberValidationUtils.isRealNumber("+0.14"));
* Assert.assertTrue(NumberValidationUtils.isRealNumber("-1"));
* Assert.assertTrue(NumberValidationUtils.isRealNumber("0.0"));
* Assert.assertFalse(NumberValidationUtils.isRealNumber("00.13"));
* Assert.assertFalse(NumberValidationUtils.isRealNumber("ab"));
* @param orginal
* @return
*/
public static boolean isRealNumber(String orginal){
return isWholeNumber(orginal) || isDecimal(orginal);
}
}
类似的还有日期工具类:
package com.lubansoft.customized.framework.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @author gsf
* @date 2023-02-09 15:43
* @desc
*/
public class DateUtils {
/**
* date转时间戳
* @param date
* @return
*/
public static Long dateToLong(Date date) {
if(Objects.isNull(date)){
return null;
}
return date.getTime();
}
/**
* 时间戳转date
* @param l
* @return
*/
public static Date longToDate(Long l) {
if(Objects.isNull(l)){
return null;
}
return new Date(l);
}
/**
* 时间戳转string
* @param l
* @return
*/
public static String longToString(Long l) {
if(Objects.isNull(l)){
return null;
}
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return format.format(l);
}
/**
* 字符串转时间戳
* @param s
* @return
*/
public static Long stringToLong(String s) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date;
try {
date = format.parse(s);
return date.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
/**
* 传入两个时间范围,返回这两个时间范围内的所有日期,并保存在一个集合中
*
* @param beginTime
* @param endTime
* @return
* @throws Exception
*/
public static List<String> findEveryDay(String beginTime, String endTime)
throws Exception {
//创建一个放所有日期的集合
List<String> dates = new ArrayList();
//创建时间解析对象规定解析格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//将传入的时间解析成Date类型,相当于格式化
Date dBegin = sdf.parse(beginTime);
Date dEnd = sdf.parse(endTime);
//将格式化后的第一天添加进集合
dates.add(sdf.format(dBegin));
//使用本地的时区和区域获取日历
Calendar calBegin = Calendar.getInstance();
//传入起始时间将此日历设置为起始日历
calBegin.setTime(dBegin);
//判断结束日期前一天是否在起始日历的日期之后
while (dEnd.after(calBegin.getTime())) {
//根据日历的规则:月份中的每一天,为起始日历加一天
calBegin.add(Calendar.DAY_OF_MONTH, 1);
//得到的每一天就添加进集合
dates.add(sdf.format(calBegin.getTime()));
//如果当前的起始日历超过结束日期后,就结束循环
}
return dates;
}
/**
* 获取两个日期之间的所有月份 (年月)
*
* @param startTime
* @param endTime
* @return:list
*/
public static List<String> getMonthBetweenDate(String startTime, String endTime) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
// 声明保存日期集合
List<String> list = new ArrayList<>();
try {
// 转化成日期类型
Date startDate = sdf.parse(startTime);
Date endDate = sdf.parse(endTime);
//用Calendar 进行日期比较判断
Calendar calendar = Calendar.getInstance();
while (startDate.getTime() <= endDate.getTime()) {
// 把日期添加到集合
list.add(sdf.format(startDate));
// 设置日期
calendar.setTime(startDate);
//把月数增加 1
calendar.add(Calendar.MONTH, 1);
// 获取增加后的日期
startDate = calendar.getTime();
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
/**
* 获取指定天的开始时间
* @return
*/
public static Date getStartTimeOfCurrentDay(Date date){
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.setTime(date);
setMinTimeOfDay(calendar);
return calendar.getTime();
}
/**
* 获取指定天的结束时间
* @return
*/
public static Date getEndTimeOfCurrentDay(Date date){
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.setTime(date);
setMaxTimeOfDay(calendar);
return calendar.getTime();
}
/**
* 设置当天的开始时间
* @param calendar
*/
private static void setMinTimeOfDay(Calendar calendar) {
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.MILLISECOND, 0);
}
/**
* 设置当天的结束时间
* @param calendar
*/
private static void setMaxTimeOfDay(Calendar calendar) {
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.MILLISECOND, 999);
}
/**
* 获取当前指定时间的当前月结束时间
* @param timeStamp
* @return
*/
public static Long getMonthEndTime(Long timeStamp) {
Calendar calendar = Calendar.getInstance();// 获取当前日期
calendar.setTimeZone(TimeZone.getDefault());
calendar.setTimeInMillis(timeStamp);
calendar.add(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));// 获取当前月/当年最后一天
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 59);
return calendar.getTimeInMillis();
}
public static Long getMonthStartTime(Long timeStamp) {
Calendar calendar = Calendar.getInstance();// 获取当前日期
calendar.setTimeZone(TimeZone.getDefault());
calendar.setTimeInMillis(timeStamp);
calendar.add(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTimeInMillis();
}
}