Java 自定义常用工具类

自定义常用工具类:

1.检测字符串是否为空 2.检测字符串是否不为空
3.给一个指定的日期加上天数,返回相加之后的日期
4.整数(秒数)转换成为 时分秒 格式(xx:xx:xx)
5.判断时间数字小于等于9,往前补0
6.秒数 返回 时日分秒
7.获取几位数字随机数
8.获取几位字母随机数
9.获取几位数字字母随机数
10.判断字符串数组中是否包含某字符串
11.判断字符串是否是数字
12.计算距离生日还有多少天
13.将请求参数与数值放入map中

package com.example.mimiprogram.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.regex.Pattern;

import javax.servlet.http.HttpServletRequest;

public class Tools {
     
	
	/**
	 * 检测字符串是否为空(null,"","null")
	 * @param s
	 * @return 为空返回true,否则返回false
	 */
	public static boolean isEmpty(String s){
     
		return s == null || "".equals(s) || "null".equals(s);
	}
	
	/**
	 * 检测字符串是否不为空(null,"","null")
	 * @param s
	 * @return 不为空返回true,否则返回false
	 */
	public static boolean notEmpty(String s){
     
		return s != null && !"".equals(s) && !"null".equals(s);
	}
	
	/**
	 * 给一个指定的日期加上天数,返回相加之后的日期
	 * @param timeParam:指定日期
	 * @param day: 要加上的天数
	 * @throws ParseException 
	 */
	public static String addDate(String timeParam,long day) throws ParseException{
     
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		
		Date date = sdf.parse(timeParam);//指定日期
		long time = date.getTime();//得到指定日期的毫秒数
		day = day * 24 * 60 * 60 * 1000;//要加上的天数转换成毫秒数
		time += day;//相加得到最终的毫秒数
		
		Date newDate = new Date(time);//将毫秒数转换成时间格式
		return sdf.format(newDate);//格式化成日期 年-月-日
	}
	
	/**
	 * 整数(秒数)转换成为 时分秒 格式(xx:xx:xx)
	 * @param time:秒数
	 */
	public static String numberFormatTime(int time){
     
		
		String timeStr="";
		
		int hour=time/3600;//时
		int minute = time/60%60;//分
		int second = time%60;//秒
		
		if(hour == 0){
     
			if(minute == 0){
     
				timeStr = "00:"+timeUnitFormat(second);
			}else{
     
				timeStr = timeUnitFormat(minute)+":"+timeUnitFormat(second);
			}
		}else{
     
			timeStr = timeUnitFormat(hour)+":"+timeUnitFormat(minute)+":"+timeUnitFormat(second);
		}
		return timeStr;
		
	}
	
	/**
	 * 判断时间数字小于等于9,往前补0
	 * @param time 
	 */
	public static String timeUnitFormat(int time){
     
		String timeStr = String.valueOf(time);
		if(time <= 9){
     
			return "0"+timeStr;
		}else{
     
			return timeStr;
		}
	}
	
	/**
	 * 返回 日时分秒
	 * @param second 秒数
	 */
	public static String secondToTIme(long second){
     
		
		long days = second/86400;//转化天数       1天= 1 *24 * 60 * 60 =86400秒
		second = second%86400;//剩余秒数
		
		long hours = second/3600;//转化小时数    1小时= 1 * 60 * 60 =3600秒
		second = second%3600;//剩余秒数
		
		long minutes = second/60;//转化分钟数    1小时= 1 * 60 =60秒
		second = second%60;//剩余秒数
		
		if(days >0 ){
     
			return days+"天,"+hours+"小时,"+minutes+"分钟,"+second+"秒";
		}else{
     
			return hours+"小时,"+minutes+"分钟,"+second+"秒";
		}
	}
		
	/**
	 * 获取数字随机数
	 * @param length
	 * @return
	 */
	public static String getNumberRandom(int length) {
     
		
		String val = "";
		Random random = new Random();
		//参数length,表示生成几位随机数
		for(int i = 0; i < length; i++) {
     
			val += String.valueOf(random.nextInt(10));
		}
		return val;
	}
	
	/**
	 * 获取字母随机数
	 * @param length
	 * @return
	 */
	public static String getCharRandom(int length) {
     
		
		String val = "";
		Random random = new Random();
		//参数length,表示生成几位随机数
		for(int i = 0; i < length; i++) {
     
			//输出是大写字母还是小写字母
			int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;
			val += (char)(random.nextInt(26) + temp);
		}
		return val;
	}
	
	/**
	 * 获取字母数字随机数
	 * @param length
	 * @return
	 */
	public static String getStringRandom(int length) {
     

        String val = "";
        Random random = new Random();
        //参数length,表示生成几位随机数
        for(int i = 0; i < length; i++) {
     
           String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";
           //输出字母还是数字
           if("char".equalsIgnoreCase(charOrNum)){
     
               //输出是大写字母还是小写字母
               int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;
               val += (char)(random.nextInt(26) + temp);
           }else if("num".equalsIgnoreCase(charOrNum)) {
     
               val += String.valueOf(random.nextInt(10));
           }
       }
       return val;
   }
   
	/**
	 * 判断字符串数组中是否包含某字符串
	 * @param arr :字符串数组
	 * @param targetValue:字符串
	 * @return
	 */
	public static boolean indexString(String[] arr,String targetValue){
     
	    return Arrays.asList(arr).contains(targetValue);
	}
	
	/**
	 * 判断字符串是否是数字
	 * @param number 字符串
	 * @return
	 */
	 public static boolean isNumber(String number){
     
		boolean isInt = Pattern.compile("^-?[1-9]\\d*$").matcher(number).find();
		boolean isDouble = Pattern.compile("^-?([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+|0)$").matcher(number).find();
		return isInt || isDouble;
     }
     
	/**
	 * 计算距离生日还有多少天
	 * @param addtime:生日日期
	 * @return
	 */
	public static int getBirthDay(String addtime) {
     
		int days = 0;
		try {
     
			SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
			String clidate = addtime;
			Calendar cToday = Calendar.getInstance(); // 存今天
			Calendar cBirth = Calendar.getInstance(); // 存生日
			cBirth.setTime(myFormatter.parse(clidate)); // 设置生日
			cBirth.set(Calendar.YEAR, cToday.get(Calendar.YEAR)); // 修改为本年
			if (cBirth.get(Calendar.DAY_OF_YEAR) < cToday.get(Calendar.DAY_OF_YEAR)) {
     
				// 生日已经过了,要算明年的了
				days = cToday.getActualMaximum(Calendar.DAY_OF_YEAR) - cToday.get(Calendar.DAY_OF_YEAR);
				days += cBirth.get(Calendar.DAY_OF_YEAR);
			} else {
     
				// 生日还没过
				days = cBirth.get(Calendar.DAY_OF_YEAR) - cToday.get(Calendar.DAY_OF_YEAR);
			}
		} catch (ParseException e) {
     
			e.printStackTrace();
		}
		return days;
	}
	
	/**
	 * 将请求参数与数值放入Map中
	 * @param number 字符串
	 * @return
	 */
	 public static Map<String,Object> formatRequestParams(HttpServletRequest request){
     
      Map<String,Object> map = new HashMap<String,Object>();
      //request.getParameterNames 将发送请求页面中form表单里所有具有name属性的表单对象获取(包括button).返回一个Enumeration类型的枚举.
      Enumeration<String> paramNames=request.getParameterNames();
      //通过Enumeration的hasMoreElements()方法遍历
      while (paramNames.hasMoreElements()) {
     
    	    //再由nextElement()方法获得枚举的值.此时的值是form表单中所有控件的name属性的值.
			String paramName = paramNames.nextElement();
			//request.getParameterValues 将获取所有form表单中name属性为"name"的值.该方法返回一个数组.遍历数组就可得到value值.
			String[] paramValues = request.getParameterValues(paramName);
			if (paramValues.length == 1) {
     
				String paramValue = paramValues[0];
				if (paramValue.length() != 0) {
     
					map.put(paramName, paramValue);
				}
			}
		}
		return map;
     }
	public static void main(String[] args) {
     
		String newDate;
		try {
     
			newDate = addDate("2020-06-30",1);
			System.out.println(newDate);
			
			System.out.println(numberFormatTime(100));
			
			System.out.println(secondToTIme(3600));
		} catch (ParseException e) {
     
			e.printStackTrace();
		}
	}
}

你可能感兴趣的:(java)