long类型的秒转换成字符串的天时分秒

public class LongTimeConvertUtil {
    private static final String SECOND = "秒";
    private static final Long SECOND_LONG = 1L;
    private static final String MINUTE = "分";
    private static final Long MINUTE_LONG = 60 * SECOND_LONG;
    private static final String HOUR = "时";
    private static final Long HOUR_LONG = 60 * MINUTE_LONG;
    private static final String DAY = "天";
    private static final Long DAY_LONG = 24 * HOUR_LONG;
    
    public static String secondLongConvertString(Long second) {
        if (ObjectUtil.isNotNull(second)) {
            TimeDetailedDTO timeDetailedDTO = computeLongTime(second);
            return assembleTime(timeDetailedDTO);
        } else {
            return assembleTime(new TimeDetailedDTO(0L, 0L, 0L, 0L));
        }
    }
    
    public static TimeDetailedDTO computeLongTime(Long second) {
        if (ObjectUtil.isNotNull(second)) {
            long dayNum = second / DAY_LONG;
            long hourNum = (second - dayNum * DAY_LONG) / HOUR_LONG;
            long minuteNum = (second - dayNum * DAY_LONG - hourNum * HOUR_LONG) / MINUTE_LONG;
            long secondNum = (second - dayNum * DAY_LONG - hourNum * HOUR_LONG - minuteNum * MINUTE_LONG) / SECOND_LONG;
            
            return new TimeDetailedDTO(dayNum, hourNum, minuteNum, secondNum);
        } else {
            return new TimeDetailedDTO(0L, 0L, 0L, 0L);
        }
    }
    
    public static Long secondStringConvertLong(String time) {
        TimeDetailedDTO timeDetailedDTO = splitTime(time);
        return timeDetailedDTO.getDay() * DAY_LONG + timeDetailedDTO.getHour() * HOUR_LONG
                + timeDetailedDTO.getMinute() * MINUTE_LONG + timeDetailedDTO.getSecond() * SECOND_LONG;
    }
    
    public static TimeDetailedDTO splitTime(String time) {
        if (StringUtils.isNotBlank(time)) {
            String[] dayTime = time.trim().split(DAY);
            Long day = Long.parseLong(dayTime[0]);
            String[] hourTime = dayTime[1].trim().split(HOUR);
            Long hour = Long.parseLong(hourTime[0]);
            String[] minuteTime = hourTime[1].trim().split(MINUTE);
            Long minute = Long.parseLong(minuteTime[0]);
            String[] secondTime = minuteTime[1].trim().split(SECOND);
            Long second = Long.parseLong(secondTime[0]);
            return new TimeDetailedDTO(day, hour, minute, second);
        } else {
            return new TimeDetailedDTO(0L, 0L, 0L, 0L);
        }
    }
    
    public static String assembleTime(TimeDetailedDTO timeDetailedDTO) {
        return timeDetailedDTO.getDay() + DAY + timeDetailedDTO.getHour() + HOUR + timeDetailedDTO.getMinute() + MINUTE + timeDetailedDTO.getSecond() + SECOND;
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值