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;
}
}