1. 新建 CompareUnit.java
package org.cs.base.utils.enm; /** * 时间比较单位枚举 * <p> * HOUR, //时 * <p> * MINUTE, //分 * <p> * SECOND //秒 * * @author admin * @since 2022-4-25 */ public enum CompareUnit { HOUR, //时 MINUTE, //分 SECOND //秒 }
2. 新建 CalendarUtils.java
package org.cs.base.utils; import org.apache.log4j.Logger; import org.cs.base.utils.enm.CompareUnit; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.text.SimpleDateFormat; import java.util.Calendar; /** * 日期工具类 * * @author admin * @since 2022-04-25 */ public class CalendarUtils { private static Logger log = Logger.getLogger(CalendarUtils.class); /** * 时间比较 * * @param t1 时间1 * @param t2 时间2 * @param unit 单位 * @return */ public static long compareTo(String t1, String t2, CompareUnit unit) { long res; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(yyyy/MM/dd HH:mm:ss); Calendar c1 = Calendar.getInstance(); Calendar c2 = Calendar.getInstance(); try { c1.setTime(simpleDateFormat.parse(t1)); c2.setTime(simpleDateFormat.parse(t2)); long m1 = c1.getTime().getTime(); long m2 = c2.getTime().getTime(); switch (unit) { case SECOND: res = (m1 - m2) / 1000; break; case MINUTE: res = (m1 - m2) / 1000 / 60; break; case HOUR: res = (m1 - m2) / 1000 / 60 / 24; break; default: res = -1L; break; } } catch (Exception e) { ByteArrayOutputStream bs = new ByteArrayOutputStream(); e.printStackTrace(new PrintStream(bs)); log.warn(bs); res = -1L; } return res; } }
3. 测试
public static void main(String[] args) throws ParseException { String t1 = 2022/04/25 18:57:05; String t2 = 2022/04/25 18:21:01; System.out.println(时: + CalendarUtils.compareTo(t1, t2, CompareUnit.HOUR)); System.out.println(分: + CalendarUtils.compareTo(t1, t2, CompareUnit.MINUTE)); System.out.println(秒: + CalendarUtils.compareTo(t1, t2, CompareUnit.SECOND)); }