| | |
| | | package com.ruoyi.common.core.utils; |
| | | |
| | | import org.apache.commons.lang3.time.DateFormatUtils; |
| | | |
| | | import java.lang.management.ManagementFactory; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.LocalTime; |
| | | import java.time.ZoneId; |
| | | import java.time.ZonedDateTime; |
| | | import java.time.*; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import org.apache.commons.lang3.time.DateFormatUtils; |
| | | |
| | | /** |
| | | * 时间工具类 |
| | |
| | | "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", |
| | | "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", |
| | | "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; |
| | | |
| | | public static void main(String[] args) throws ParseException { |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | Date start = sdf.parse("2021-10-01 10:00:00"); |
| | | Date end = sdf.parse("2021-10-01 12:30:00"); |
| | | String time = formatDuration(start,end); |
| | | System.out.println(time); |
| | | } |
| | | |
| | | /** |
| | | * 获取当前Date型日期 |
| | |
| | | |
| | | public static final String dateTime(final Date date) |
| | | { |
| | | return parseDateToStr(YYYY_MM_DD, date); |
| | | return parseDateToStr(YYYY_MM_DD_HH_MM_SS, date); |
| | | } |
| | | |
| | | public static final String parseDateToStr(final String format, final Date date) |
| | |
| | | /** |
| | | * 计算时间差 |
| | | * |
| | | * @param endTime 最后时间 |
| | | * @param endDate 最后时间 |
| | | * @param startTime 开始时间 |
| | | * @return 时间差(天/小时/分钟) |
| | | */ |
| | |
| | | return day + "天" + hour + "小时" + min + "分钟"; |
| | | } |
| | | |
| | | public static long diffTime(Date startTime, Date endTime){ |
| | | // 获取Calendar实例 |
| | | Calendar cal1 = Calendar.getInstance(); |
| | | Calendar cal2 = Calendar.getInstance(); |
| | | // 设置Calendar对象的时间 |
| | | cal1.setTime(startTime); |
| | | cal2.setTime(endTime); |
| | | // 获取时间差 |
| | | long milliseconds1 = cal1.getTimeInMillis(); |
| | | long milliseconds2 = cal2.getTimeInMillis(); |
| | | long diff = milliseconds2 - milliseconds1; |
| | | return diff; |
| | | } |
| | | |
| | | /** |
| | | * 增加 LocalDateTime ==> Date |
| | | */ |
| | |
| | | ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault()); |
| | | return Date.from(zdt.toInstant()); |
| | | } |
| | | |
| | | public static String formatDuration(Date start, Date end) { |
| | | long duration = end.getTime() - start.getTime(); |
| | | long days = duration / (24 * 60 * 60 * 1000); |
| | | long hours = (duration % (24 * 60 * 60 * 1000)) / (60 * 60 * 1000); |
| | | long minutes = (duration % (60 * 60 * 1000)) / (60 * 1000); |
| | | long seconds = (duration % (60 * 1000)) / 1000; |
| | | StringBuilder sb = new StringBuilder(); |
| | | if (days > 0) { |
| | | sb.append(days).append("天"); |
| | | } |
| | | if (hours > 0) { |
| | | sb.append(hours).append("小时"); |
| | | } |
| | | if (minutes > 0) { |
| | | sb.append(minutes).append("分"); |
| | | } |
| | | if (seconds > 0) { |
| | | sb.append(seconds).append("秒"); |
| | | } |
| | | return sb.toString(); |
| | | } |
| | | |
| | | public static Date getTodayStartTime() { |
| | | // 获取今天的日期 |
| | | LocalDate today = LocalDate.now(); |
| | | |
| | | // 获取当天的开始时间(00:00:00) |
| | | LocalDateTime startOfDay = today.atStartOfDay(); |
| | | |
| | | // 转换为 Date 类型 |
| | | return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant()); |
| | | } |
| | | } |