|
@@ -0,0 +1,198 @@
|
|
|
|
|
+package com.aoyang.tms.util;
|
|
|
|
|
+
|
|
|
|
|
+import java.text.DateFormat;
|
|
|
|
|
+import java.text.ParseException;
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
|
|
+import java.util.Calendar;
|
|
|
|
|
+import java.util.Date;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * @Description: 日期时间工具类
|
|
|
|
|
+ * @Author guoyong
|
|
|
|
|
+ * @Date 2022/4/24 10:51
|
|
|
|
|
+ * @Version 1.0
|
|
|
|
|
+ */
|
|
|
|
|
+
|
|
|
|
|
+public class DateUtils {
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 通过Date类获取时间
|
|
|
|
|
+ *
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public static String getDateByDate() {
|
|
|
|
|
+ Date date = new Date();
|
|
|
|
|
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-HH-dd HH:mm:ss");
|
|
|
|
|
+ String dateStr = dateFormat.format(date);
|
|
|
|
|
+ System.out.println(dateStr);
|
|
|
|
|
+ return dateStr;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 通过Calendar类获取时间
|
|
|
|
|
+ *
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+
|
|
|
|
|
+ public static String getDateByCalendar() {
|
|
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
|
|
+ Date date = calendar.getTime();
|
|
|
|
|
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-HH-dd HH:mm:ss");
|
|
|
|
|
+ String dateStr = dateFormat.format(date);
|
|
|
|
|
+ System.out.println(dateStr);
|
|
|
|
|
+ return dateStr;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 通过字符串获取时间
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param dateStr
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+
|
|
|
|
|
+ public static Date formString(String dateStr) {
|
|
|
|
|
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-HH-dd HH:mm:ss");
|
|
|
|
|
+ try {
|
|
|
|
|
+ Date date = dateFormat.parse(dateStr);
|
|
|
|
|
+ System.out.println(date);
|
|
|
|
|
+ return date;
|
|
|
|
|
+ } catch (ParseException e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 通过时间戳获取时间
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param time
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+
|
|
|
|
|
+ public static String getByLong(long time) {
|
|
|
|
|
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-HH-dd HH:mm:ss");
|
|
|
|
|
+ String date = dateFormat.format(time);
|
|
|
|
|
+ return date;
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取系统时间,时间戳
|
|
|
|
|
+ *
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public static long getCurrentTime() {
|
|
|
|
|
+ long time = System.currentTimeMillis();
|
|
|
|
|
+ return time;
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取当前年月日
|
|
|
|
|
+ *
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public static void getYearMonthDay() {
|
|
|
|
|
+
|
|
|
|
|
+//第一种,通过Calendar类获取
|
|
|
|
|
+ Calendar now = Calendar.getInstance();
|
|
|
|
|
+ System.out.println("年: " + now.get(Calendar.YEAR));
|
|
|
|
|
+ System.out.println("月: " + (now.get(Calendar.MONTH) + 1) + "");
|
|
|
|
|
+ System.out.println("日: " + now.get(Calendar.DAY_OF_MONTH));
|
|
|
|
|
+ System.out.println("时: " + now.get(Calendar.HOUR_OF_DAY));
|
|
|
|
|
+ System.out.println("分: " + now.get(Calendar.MINUTE));
|
|
|
|
|
+ System.out.println("秒: " + now.get(Calendar.SECOND));
|
|
|
|
|
+ System.out.println("当前时间毫秒数:" + now.getTimeInMillis());
|
|
|
|
|
+//第二种,通过Date类获取
|
|
|
|
|
+ Date date = new Date();
|
|
|
|
|
+ DateFormat df1 = DateFormat.getDateInstance();//日期格式,精确到日
|
|
|
|
|
+ System.out.println(df1.format(date));
|
|
|
|
|
+ DateFormat df2 = DateFormat.getDateTimeInstance();//可以精确到时分秒
|
|
|
|
|
+ System.out.println(df2.format(date));
|
|
|
|
|
+ DateFormat df3 = DateFormat.getTimeInstance();//只显示出时分秒
|
|
|
|
|
+ System.out.println("只显示出时分秒:" + df3.format(date));
|
|
|
|
|
+ DateFormat df4 = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL); //显示日期,周,上下午,时间(精确到秒)
|
|
|
|
|
+ System.out.println("显示日期,周,上下午,时间(精确到秒):" + df4.format(date));
|
|
|
|
|
+ DateFormat df5 = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG); //显示日期,上下午,时间(精确到秒)
|
|
|
|
|
+ System.out.println("显示日期,上下午,时间(精确到秒):" + df5.format(date));
|
|
|
|
|
+ DateFormat df6 = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); //显示日期,上下午,时间(精确到分)
|
|
|
|
|
+ System.out.println("显示日期,上下午,时间(精确到分):" + df6.format(date));
|
|
|
|
|
+ DateFormat df7 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM); //显示日期,时间(精确到分)
|
|
|
|
|
+ System.out.println("显示日期,时间(精确到分):" + df7.format(date));
|
|
|
|
|
+ String[] dates = new SimpleDateFormat("yyyy-MM-dd").format(date).split("-");
|
|
|
|
|
+ String year = dates[0];
|
|
|
|
|
+ String month = dates[1];
|
|
|
|
|
+ String day = dates[2];
|
|
|
|
|
+ String[] months = new SimpleDateFormat("HH:mm:ss").format(date).split(":");
|
|
|
|
|
+ String hour = dates[0];
|
|
|
|
|
+ String minute = dates[1];
|
|
|
|
|
+ String seconde = dates[2];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取前一段时间/后一段时间
|
|
|
|
|
+ */
|
|
|
|
|
+ public static void beforTime() {
|
|
|
|
|
+//根据现在时间计算
|
|
|
|
|
+ Calendar now = Calendar.getInstance();
|
|
|
|
|
+ now.add(Calendar.YEAR, 1); //现在时间是1年后
|
|
|
|
|
+ System.out.println(now);
|
|
|
|
|
+ now.add(Calendar.YEAR, -1); //现在时间是1年前
|
|
|
|
|
+ System.out.println(now);
|
|
|
|
|
+//根据某个特定的时间 date (Date 型) 计算
|
|
|
|
|
+ Calendar specialDate = Calendar.getInstance();
|
|
|
|
|
+ specialDate.setTime(new Date()); //注意在此处将 specialDate 的值改为特定日期
|
|
|
|
|
+ specialDate.add(Calendar.YEAR, 1); //特定时间的1年后
|
|
|
|
|
+ System.out.println(specialDate);
|
|
|
|
|
+ specialDate.add(Calendar.YEAR, -1); //特定时间的1年前
|
|
|
|
|
+ System.out.println(specialDate);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 计算两个日期相差多少小时,分钟,毫秒
|
|
|
|
|
+ */
|
|
|
|
|
+
|
|
|
|
|
+ public static String betweenDay(LocalDateTime startTime, LocalDateTime endTime) {
|
|
|
|
|
+ java.time.Duration duration = java.time.Duration.between(startTime, endTime);
|
|
|
|
|
+ //总秒
|
|
|
|
|
+ long seconds = duration.toMillis() / 1000;
|
|
|
|
|
+ //总分钟
|
|
|
|
|
+ long minutes = duration.toMinutes();
|
|
|
|
|
+ //总小时
|
|
|
|
|
+ long hours = duration.toHours();
|
|
|
|
|
+ //总天数
|
|
|
|
|
+ long days = duration.toDays();
|
|
|
|
|
+
|
|
|
|
|
+ System.out.println(days);
|
|
|
|
|
+ System.out.println(hours);
|
|
|
|
|
+ System.out.println(minutes);
|
|
|
|
|
+ System.out.println(seconds);
|
|
|
|
|
+ String last = "";
|
|
|
|
|
+ if (days > 0) {
|
|
|
|
|
+ last = last + days + "天";
|
|
|
|
|
+ }
|
|
|
|
|
+ if (hours > 0) {
|
|
|
|
|
+ last = last + hours % 24 + "小时";
|
|
|
|
|
+ }
|
|
|
|
|
+ if (minutes > 0) {
|
|
|
|
|
+ last = last + minutes % 60 + "分钟";
|
|
|
|
|
+ }
|
|
|
|
|
+ return last;
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public static void main(String[] args) {
|
|
|
|
|
+ LocalDateTime now = LocalDateTime.of(2022, 4, 24, 11, 9, 38);
|
|
|
|
|
+ LocalDateTime end = LocalDateTime.of(2022, 4, 25, 14, 8, 38);
|
|
|
|
|
+ String last = betweenDay(now, end);
|
|
|
|
|
+ System.out.println(last);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+}
|
|
|
|
|
+
|