import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DurationFormatUtils;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
/**
- 日期转化格式、获取百分比(不含%)
- 获取平均数、根据日期获取该日期所在周的周一
- 获取所在周的周日的日期、获取两个日期之间的天数
- 字符串转化时间、时间转化时间戳
- 时间戳转换为时间、将时间转化为字符串
- 对数字型字符串转化为时间格式(00:00:00),转换后的数字单位是秒
/
public class ReportUtil {
/*
* 日期的转化格式
*/
public static final SimpleDateFormat sdf= new SimpleDateFormat(“yyyy-MM-dd”);
/**
* 获取百分比(不含%)
*/
public static String getPercent(long countNum,long totalCount){
NumberFormat instance = NumberFormat.getInstance();
instance.setMaximumFractionDigits(2);
return countNum==0L||totalCount==0L?"0.00":
instance.format(Float.valueOf(countNum)/Float.valueOf(totalCount)*100);
}
// public static void main(String[] args) {
// int countNum=50;
// int totalCount=100;
// String abc= ( ReportUtil.getPercent(countNum,totalCount)+“%”);
// System.out.println(“abc===== " +abc);
// }
/**
* 获取百分比(不含%)
/
public static String getPercent(double countNum,double totalCount){
NumberFormat instance = NumberFormat.getInstance();
instance.setMaximumFractionDigits(2);
return countNum0L||totalCount0L?“0.00”:
instance.format(countNum/totalCount100);
}
// public static void main(String[] args) {
// int countNum=50;
// int totalCount=100;
// Float aFloat = Float.valueOf(countNum);
// Float aFloat1 = Float.valueOf(totalCount);
// String abc= ( ReportUtil.getPercent(aFloat,aFloat1)+”%");
// System.out.println("abc===== " +abc);
// }
/**
* 获取平均数
*/
public static String getAvg(long countNum,long totalCount){
NumberFormat instance = NumberFormat.getInstance();
instance.setMaximumFractionDigits(2);
return countNum==0L||totalCount==0L?"0":
instance.format(Float.valueOf(countNum)/Float.valueOf(totalCount));
}
// public static void main(String[] args) {
// int countNum=50;
// int totalCount=100;
// String abc= ( ReportUtil.getAvg(countNum,totalCount));
// System.out.println("abc===== " +abc);
// }
/**
* 获取平均数
*/
public static String getAvg(double countNum,double totalCount){
NumberFormat instance = NumberFormat.getInstance();
instance.setMaximumFractionDigits(2);
return countNum==0D||totalCount==0D?"0.0":
instance.format(countNum/totalCount);
}
// public static void main(String[] args) {
// int countNum=50;
// int totalCount=100;
// Float aFloat = Float.valueOf(countNum);
// Float aFloat1 = Float.valueOf(totalCount);
// String abc= ( ReportUtil.getAvg(aFloat,aFloat1));
// System.out.println("abc===== " +abc);
// }
/**
* 根据日期获取该日期所在周的周一
*/
public static String getMobdy(String date){
Calendar instance = Calendar.getInstance();
Date parse;
try{
parse= sdf.parse(date);
}catch (ParseException e){
throw new CommonException("日期格式转换异常");
}
instance.setTime(parse);
int i = instance.get(Calendar.DAY_OF_WEEK);
if (i==1){
instance.add(Calendar.DAY_OF_WEEK,-1);
}
instance.setFirstDayOfWeek(Calendar.MONDAY);
int day = instance.get(Calendar.DAY_OF_WEEK);
instance.add(Calendar.DATE,instance.getFirstDayOfWeek()-day);
return sdf.format(instance.getTime());
}
// public static void main(String[] args) {
// String date=“2021-12-28”;
// String mobdy = ReportUtil.getMobdy(date);
// System.out.println("mobdy "+mobdy);
// }
/**
* 获取所在周的周日的日期
*/
public static String getSatDay(String date){
Calendar instance = Calendar.getInstance();
Date parse;
try{
parse= sdf.parse(date);
}catch (ParseException e){
throw new CommonException("日期格式转换异常");
}
instance.setTime(parse);
int i = instance.get(Calendar.DAY_OF_WEEK);
if (i==1){
instance.add(Calendar.DAY_OF_WEEK,-1);
}
instance.setFirstDayOfWeek(Calendar.MONDAY);
instance.add(Calendar.DATE,6);
return sdf.format(instance.getTime());
}
/**
* 获取两个日期之间的天数
*/
public static long getDay(String startTime,String endTime){
Date start;
Date end;
try {
start=sdf.parse(startTime);
end=sdf.parse(endTime);
}catch (ParseException e){
throw new CommonException("日期转换格式异常");
}
return (end.getTime()-start.getTime())/(60*60*24*1000)+1;
}
// public static void main(String[] args) {
// String startTime=“2021-12-02”;
// String endTime=“2021-12-15”;
// long day = ReportUtil.getDay(startTime, endTime);
// System.out.println("day "+day);
// }
/**
* 字符串转换为时间
*/
public static LocalDateTime parseStringToDate(String time,String formate){
DateTimeFormatter df= DateTimeFormatter.ofPattern(formate);
return LocalDateTime.parse(time,df);
}
/**
* 时间戳转换为时间
*/
public static LocalDateTime getLocalDate(long timestamp){
Instant instant = Instant.ofEpochMilli(timestamp);
ZoneId zoneId = ZoneId.systemDefault();
return LocalDateTime.ofInstant(instant,zoneId);
}
/**
* 时间转化为时间戳
*/
public static long getTimeStampOfDateTime(LocalDateTime time){
ZoneId zoneId = ZoneId.systemDefault();
Instant instant = time.atZone(zoneId).toInstant();
return instant.toEpochMilli();
}
/**
* 将时间转换为字符串
*/
public static String getDateTimesToString(LocalDateTime time,String format){
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format);
return time.format(dateTimeFormatter);
}
/**
* 对数字型字符串转化为时间格式(00:00::00),转换后的数字单位为秒
*/
public static String secondsToFormate(String time){
if (StringUtils.isEmpty(time)){
return "00:00:00";
}
String substr=time.indexOf(".")<0?time:time.substring(0,time.indexOf("."));
return DurationFormatUtils.formatDuration(Integer.valueOf(substr)*1000,"HH:mm:ss");
}
}