BaseUtil.java 8.3 KB
package com.skua.modules.quartz.util;

import org.apache.commons.lang3.StringUtils;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class BaseUtil {
	/**
	 * 保留两位小数方法
	 *
	 * @param pram
	 * @return
	 */
	public static String formatMath(Double pram) {
		DecimalFormat df = new DecimalFormat("######0.00");
		return df.format(pram);
	}

	/***
	 * 分割字符串,然后拼接
	 * @param str 带分隔字符串
	 * @param splitStr  分割符号
	 * @return
	 */
	public static String quoteEach(String  str,String splitStr) {
		if( str != null && str.length() > 0 ){
			String[] items = str.split(splitStr);
			StringBuilder sb = new StringBuilder();
			for (int i = 0; i < items.length; i++) {
				if (i > 0) {
					sb.append(", ");
				}
				sb.append('\'').append(items[i]).append('\'');
			}
			return sb.toString();
		}
		return str;

	}

	/**
	 * 获取当前天0点的时间戳
	 *
	 * @return
	 */
	public static Long timeLong(int hour) {
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.HOUR_OF_DAY, hour);
		cal.set(Calendar.SECOND, 0);
		cal.set(Calendar.MINUTE, 0);
		cal.set(Calendar.MILLISECOND, 0);
		return cal.getTimeInMillis() / 1000;
	}

	/**
	 * 获取前一天0点的时间戳
	 *
	 * @return
	 */
	public static Long timeLongBefore(int hour) {
		Calendar cal = Calendar.getInstance();
		cal.add(Calendar.DAY_OF_MONTH, -1); // 设置为前一天
		cal.set(Calendar.HOUR_OF_DAY, hour);
		cal.set(Calendar.SECOND, 0);
		cal.set(Calendar.MINUTE, 0);
		cal.set(Calendar.MILLISECOND, 0);
		return cal.getTimeInMillis() / 1000;
	}

	/**
	 * 获取前一小时的时间
	 *
	 * @return
	 */
	public static String timeBeforeHour() {
		Calendar calendar = Calendar.getInstance();
		/* HOUR_OF_DAY 指示一天中的小时 */
		calendar.set(Calendar.HOUR_OF_DAY,
				calendar.get(Calendar.HOUR_OF_DAY) - 1);
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH");
		String str = df.format(calendar.getTime());
		// System.out.println("一个小时前的时间:" + str+":00:00");
		// System.out.println("当前的时间:" + df.format(new Date()));
		return str + ":00:00";
	}

	/**
	 * 获取前一天的日期
	 *
	 * @param
	 */
	public static String dateString() {
		Date dNow = new Date(); // 当前时间
		Date dBefore = new Date();
		Calendar calendar = Calendar.getInstance(); // 得到日历
		calendar.setTime(dNow);// 把当前时间赋给日历
		calendar.add(Calendar.DAY_OF_MONTH, -1); // 设置为前一天
		dBefore = calendar.getTime(); // 得到前一天的时间

		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 设置时间格式
		String defaultStartDate = sdf.format(dBefore); // 格式化前一天
		// String defaultEndDate = sdf.format(dNow); //格式化当前时间
		return defaultStartDate;
	}

	/**
	 * 保留两位小数
	 *
	 * @param a
	 * @param b
	 * @return
	 */
	public static Double division(Double a, Double b) {
		if (b == 0d) {
			return 0d;// 如果除数为0,返回0
		}
		BigDecimal bg = new BigDecimal(a / b);
		Double result = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
		return result;
	}

	public static Double division(Double a, Integer b) {
		if (b == 0d) {
			return 0d;// 如果除数为0,返回0
		}
		BigDecimal bg = new BigDecimal(a / b);
		Double result = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
		return result;
	}

	/**
	 * 日期转时间戳
	 *
	 * @param date
	 * @return
	 */
	public static Long dateToTimeStamp(Date date, String format) {
		// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		String str_date = sdf.format(date);
		Date datetime = null;
		try {
			datetime = sdf.parse(str_date);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		Long time = datetime.getTime() / 1000;
		return time;
	}

	/**
	 * 字符串日期转时间戳
	 *
	 * @param
	 */
	public static Long getlastTime(String str_date) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date datetime = null;
		try {
			datetime = sdf.parse(str_date);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		Long time = datetime.getTime() / 1000;
		return time;
	}

	/**
	 * 日期格式化
	 *
	 * @param date
	 * @param format
	 * @return
	 */
	public static String dateTostring(Date date, String format) {

		if (format == null) {
			format = "yyyy-MM-dd";
		}
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		String str = sdf.format(date);
		return str;
	}
/**
 * 时间戳转日期字符串
 * @param seconds
 * @param format
 * @return
 */
	public static String timeStampDate(String seconds, String format) {
		if (seconds == null || seconds.isEmpty() || seconds.equals("null")) {
			return "";
		}
		if (format == null || format.isEmpty()) {
			format = "yyyy-MM-dd HH:mm:ss";
		}
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		return sdf.format(new Date(Long.valueOf(seconds + "000")));
	}
/**
 * 获得前一天的日期
 * @param date
 * @return
 */
	public static Date getNextDay(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(Calendar.DAY_OF_MONTH, -1);
		date = calendar.getTime();
		return date;
	}

	// 加法
	public static String add(String a, String b) {
		if(StringUtils.isNotEmpty(a) && StringUtils.isNotEmpty(b)){
			return String.valueOf(Double.parseDouble(a) + Double.parseDouble(b));
		}
		return "0";
	}
	/**
	 * 进行加法运算
	 *
	 * @param d1
	 * @param d2
	 * @return
	 */
	public static double add(double d1, double d2) { // 进行加法运算
		BigDecimal b1 = new BigDecimal(d1);
		BigDecimal b2 = new BigDecimal(d2);
		return b1.add(b2).doubleValue();
	}

	/**
	 * 进行减法运算
	 *
	 * @param d1
	 * @param d2
	 * @return
	 */
	public static double sub(double d1, double d2) { // 进行减法运算
		BigDecimal b1 = new BigDecimal(d1);
		BigDecimal b2 = new BigDecimal(d2);
		return b1.subtract(b2).doubleValue();
	}

	/**
	 * 进行乘法运算
	 *
	 * @param d1
	 * @param d2
	 * @return
	 */
	public static double mul(double d1, double d2) { // 进行乘法运算
		BigDecimal b1 = new BigDecimal(d1);
		BigDecimal b2 = new BigDecimal(d2);
		return b1.multiply(b2).doubleValue();
	}

	/**
	 * 进行除法运算
	 *
	 * @param d1
	 * @param d2
	 * @param len
	 * @return
	 */
	public static double div(double d1, double d2, int len) {// 进行除法运算
		if (d2 == 0d) {
			return 0d;// 如果除数为0,返回0
		}
		BigDecimal b1 = new BigDecimal(d1);
		BigDecimal b2 = new BigDecimal(d2);
		return b1.divide(b2, len, BigDecimal.ROUND_HALF_UP).doubleValue();
	}

	/**
	 * 进行四舍五入 操作
	 *
	 * @param d
	 * @param len
	 * @return
	 */
	public static double round(double d, int len) { // 进行四舍五入 操作
		BigDecimal b1 = new BigDecimal(d);
		BigDecimal b2 = new BigDecimal(1);
		// 任何一个数字除以1都是原数字
		// ROUND_HALF_UP是BigDecimal的一个常量,表示进行四舍五入的操作
//		double  result = b1.divide(b2, len, BigDecimal.ROUND_HALF_UP).doubleValue();
		return b1.divide(b2, len, BigDecimal.ROUND_HALF_UP).doubleValue();
	}
	/**
	 * 返回分钟
	 *
	 * @param date
	 *            Date 日期
	 * @return 返回秒钟
	 */
	public static int getMinute(Date date) {
	    Calendar calendar = Calendar.getInstance();
	    calendar.setTime(date);
	    return calendar.get(Calendar.MINUTE);
	}

	/**
	 * 返回秒钟
	 *
	 * @param date
	 *            Date 日期
	 * @return 返回秒钟
	 */
	public static int getSecond(Date date) {
	    Calendar calendar = Calendar.getInstance();
	    calendar.setTime(date);
	    return calendar.get(Calendar.SECOND);
	}

	public static void main(String[] args) {
//		System.out.println(dateTostring(new Date(), "yyyy-MM-dd HH"));
//		System.out.println(timeStampDate("1471493776", "yyyy-MM-dd HH:mm:ss"));
//		System.out.println(dateTostring(getNextDay(new Date()), "yyyy-MM-dd"));
		// timeBeforeHour();、
//		System.out.println(round(8.7455, 0));
//		System.out.println(timeStampDate(1479312000+"",""));
//		System.out.println(timeLongBefore(0));
//		System.out.println(timeLongBefore(24));
		System.out.println(timeBeforeHour());
		System.out.println(dateToTimeStamp(new Date(), "yyyy-MM-dd HH"));
		System.out.println(BaseUtil.timeStampDate((1479312000-24*3600)+"","yyyy-MM-dd"));
	}

}