java封装常用方法

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/fengdong1996/article/details/87804268

1、秒转换为时间显示

此方法适用于xxx秒的视频时间转换为00:00:00格式显示

1)转换为"00:00:00"格式字符串

/**
 * 将秒转换为 00:00:00格式
 * 
 * @param seconds
 * @return
 * @Description
 */
public String showTime(Integer seconds) {
	if (seconds != null) {
		int temp = 0;
		StringBuffer sb = new StringBuffer();
		temp = seconds / 3600;
		sb.append((temp < 10) ? "0" + temp + ":" : "" + temp + ":");

		temp = seconds % 3600 / 60;
		sb.append((temp < 10) ? "0" + temp + ":" : "" + temp + ":");

		temp = seconds % 3600 % 60;
		sb.append((temp < 10) ? "0" + temp : "" + temp);
		return sb.toString();
	}
	return null;
}

2)转化为"1小时1分1秒" 或 “1分1秒” 或 “1秒” 格式字符串

/**
 * 将秒转换为1小时1分1秒
 * 
 * @param seconds
 * @return
 * @Description
 */
public String showTime(Integer seconds) {
	if (seconds != null) {
		if(seconds == 0) {
			return "0秒";
		}
		int temp = 0;
		StringBuffer sb = new StringBuffer();
		temp = seconds / 3600;
		if (temp > 0) {
			sb.append((temp + "小时"));
		}
		temp = seconds % 3600 / 60;
		if (temp > 0) {
			sb.append(temp + "分");
		}
		temp = seconds % 3600 % 60;
		sb.append(temp + "秒");
		return sb.toString();
	}
	return null;
}

2、将时间精确到秒

适用于前台传来精确到“日”或“小时”或“分”的时间自动精确到秒进行保存到数据库
如:(2019-01-01 01:59:59)

1)将LocalDateTime类型的时间精确到秒后返回

/**
 * 将输入的结束时间精确到秒
 * @param LocalDateTime endTime
 * @return LocalDateTime
 * @Description 如果结束时间为2019-01-01则将日加一,然后秒减一变为2019-01-01 23:59:59
 */
public LocalDateTime setTimeToSecond(LocalDateTime endTime) {
	//LocalDateTime endTime = LocalDateTime.of(2019, 1, 1 , 0, 0, 0);
	if(endTime != null) {
		System.out.println("===============输入的结束时间为:"+ endTime + "=============");
		if (endTime.getHour() == 0 &&endTime.getMinute() == 0 && endTime.getSecond() == 0) {
			endTime = endTime.plusDays(1);
		} else if (endTime.getMinute() == 0 && endTime.getSecond() == 0) {
			endTime = endTime.plusHours(1);
		} else {
			endTime = endTime.plusMinutes(1);
		}
		endTime = endTime.minusSeconds(1);
		System.out.println("===============处理后的时间为:"+ endTime + "=============");
	}
	return endTime;
}

2)将Date类型的时间精确到秒后返回

		/**
	 * 将输入的结束时间精确到秒
	 * 
	 * @param Date
	 *            endTime
	 * @return Date
	 */
	public Date setTimeToSecond(Date endtime) {
		// 结束日期精确到秒
		if (endtime != null) {
			System.out.println("==========转换前的时间:" + endtime);
			Calendar cal = Calendar.getInstance();
			cal.setTime(endtime);
			if (cal.get(Calendar.HOUR) == 0 && cal.get(Calendar.MINUTE) == 0 && cal.get(Calendar.SECOND) == 0) {
				cal.add(Calendar.DATE, 1);
			} else if (cal.get(Calendar.MINUTE) == 0 && cal.get(Calendar.SECOND) == 0) {
				cal.add(Calendar.HOUR, 1);
			} else {
				cal.add(Calendar.SECOND, 1);
			}
			cal.add(Calendar.SECOND, -1);
			System.out.println("==========转换后的时间:" + cal.getTime());
			endtime = cal.getTime();
		}
		return endtime;
	}

3、计算当前时间所在月的开始结束时间

关键语句

	Calendar cal = Calendar.getInstance();
	cal.setTime(date);
	cal.set(Calendar.DATE, 1);//设置日为第一天
	
	cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DATE));//设置日为当月最大天数

1)获取当月第一天对应日期

	/**
	 * 获取指定时间当月第一天对应的日期
	 * @param date 参数可以为null,默认当前时间
	 * @return
	 */
	public Date getNowMothFistDate(Date date) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Calendar cal = Calendar.getInstance();
		if(date != null) {
			cal.setTime(date);
		}	
		cal.set(Calendar.DATE, 1);//设置日为第一天
		try {
			return sdf.parse(sdf.format(cal.getTime()));
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}

2)获取当月最后一天对应日期

	/**
	 * 获取指定时间当月最后一天对应的日期
	 * @param date  
	 * @return
	 */
	public Date getNowMothLastDate(Date date) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Calendar cal = Calendar.getInstance();
		if(date != null) {
			cal.setTime(date);
		}	
		cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DATE));//设置日为当月最大天数
		try {
			return sdf.parse(sdf.format(cal.getTime()));
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}

4、计算当前时间所在周的开始结束时间

关键语句:

	Calendar cal = Calendar.getInstance();
	cal.setTime(date);
	cal.set(Calendar.DAY_OF_WEEK, 2);//设置为周一,1是周日,2才是周一

	cal.set(Calendar.DAY_OF_WEEK, 7);//设置时间到本周最后一天(周六)
	cal.add(Calendar.DATE, 1);//天加一设置到周日

1)获取指定时间当周第一天对应日期

/**
	 * 获取指定时间当周第一天对应的日期
	 * @param date 参数可以为null,默认当前时间
	 * @return
	 */
	public Date getNowWeekFistDate(Date date) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Calendar cal = Calendar.getInstance();
		if(date != null) {
			cal.setTime(date);
		}	
		cal.set(Calendar.DAY_OF_WEEK, 2);//设置为周一,1是周日,2才是周一
		try {
			return sdf.parse(sdf.format(cal.getTime()));
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}
	

2)获取指定时间当周最后一天对应日期

/**
	 * 获取指定时间当周最后一天对应的日期
	 * @param date  
	 * @return
	 */
	public Date getNowWeekLastDate(Date date) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Calendar cal = Calendar.getInstance();
		if(date != null) {
			cal.setTime(date);
		}	
		cal.set(Calendar.DAY_OF_WEEK, 7);//设置时间到本周最后一天(周六)
		cal.add(Calendar.DATE, 1);//天加一设置到周日
		try {
			return sdf.parse(sdf.format(cal.getTime()));
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}

5、计算百分率

	/**
	 * 计算百分率  a/b
	 * 使用 BigDecimal  
	 * @param a
	 * @param b
	 * @param accuracy 保留位数
	 * @return
	 */
	public String getRate(String a, String b, int accuracy) {
		if (b.equals("0")) {
			return "0%";
		}
		BigDecimal decimala = new BigDecimal(a);
		BigDecimal decimalb = new BigDecimal(b);
		
		BigDecimal decimalc = decimala.divide(decimalb, 10, RoundingMode.HALF_UP).multiply(new BigDecimal("100"));//四舍五入方式保留十位
		
		if (decimalc.doubleValue() == 0) {
			return 0 + "%";
		} else if (decimalc.intValue() == 100) {
			return 100 + "%";
		} else {
			//HALF_UP:四舍五入、ROUND_DOWN:向下取整、ROUND_UP: 向上取整
			return decimalc.setScale(accuracy, RoundingMode.HALF_UP).toString() + "%";//设置保留位数,舍入方式
		}
	}

猜你喜欢

转载自blog.csdn.net/fengdong1996/article/details/87804268