java处理日期转化格式、获取百分比(不含%),平均数、时间戳转时间,时间转字符串、数字型转时间格式

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/totalCount
100);
}
// 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");
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑾莫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值