zhanghua
2023-09-08 7ef4892f9f24f941aca37e6b3991b808a0aca619
ycl-platform/src/main/java/com/ycl/common/util/DateUtils.java
New file
@@ -0,0 +1,248 @@
package com.ycl.common.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateUtils {
   /**
    * 获取两日期之间间隔的天数
    *
    * @param smdate
    *            较小的时间
    * @param bdate
    *            较大的时间
    * @return 相差天数
    */
   public static int daysBetween(Date smdate, Date bdate) {
      long between_days = 0;
      try {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         smdate = sdf.parse(sdf.format(smdate));
         bdate = sdf.parse(sdf.format(bdate));
         Calendar cal = Calendar.getInstance();
         cal.setTime(smdate);
         long time1 = cal.getTimeInMillis();
         cal.setTime(bdate);
         long time2 = cal.getTimeInMillis();
         between_days = (time2 - time1) / (1000 * 3600 * 24);
      } catch (ParseException e) {
         e.printStackTrace();
      }
      return Integer.parseInt(String.valueOf(between_days));
   }
   public static boolean isBetween(Date date, Date startDate, Date endDate) {
      try {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         startDate = sdf.parse(sdf.format(startDate));
         endDate = sdf.parse(sdf.format(endDate));
         date = sdf.parse(sdf.format(date));
         Calendar cal = Calendar.getInstance();
         cal.setTime(date);
         long time0 = cal.getTimeInMillis();
         cal.setTime(startDate);
         long time1 = cal.getTimeInMillis();
         cal.setTime(endDate);
         long time2 = cal.getTimeInMillis();
         if (time0 > time1 && time0 <= time2)
            return true;
      } catch (ParseException e) {
         e.printStackTrace();
      }
      return false;
   }
   public static boolean isToday(Date date) {
      SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
      String _date = sdf.format(date);
      String _today = sdf.format(new Date());
      return _date.equals(_today);
   }
   public static long DifferMillis(Date sDate, Date eDate) {
      try {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         sDate = sdf.parse(sdf.format(sDate));
         eDate = sdf.parse(sdf.format(eDate));
         Calendar cal = Calendar.getInstance();
         cal.setTime(sDate);
         long time1 = cal.getTimeInMillis();
         cal.setTime(eDate);
         long time2 = cal.getTimeInMillis();
         return Math.abs(time1 - time2);
      } catch (ParseException e) {
         e.printStackTrace();
      }
      return -1L;
   }
   public static long DifferSeconds(Date sDate, Date eDate) {
      return DifferMillis(sDate, eDate) / 1000;
   }
   /**
    * 相差分钟数
    *
    * @param sDate
    * @param eDate
    * @return
    */
   public static long DifferMinutes(Date sDate, Date eDate) {
      return Long.parseLong(String.valueOf(DifferMillis(sDate, eDate)
            / (1000 * 60)));
   }
   public static String getNowDate(String format) {
      return new SimpleDateFormat(format).format(new Date());
   }
   public static String getTomorrowDate(String format) {
      return new SimpleDateFormat(format).format(addDate(new Date(), 1));
   }
   public static String getDateString(Date date, String format) {
      return new SimpleDateFormat(format).format(date);
   }
   public static String getNow() {
      return getDateString(new Date(), DateUtils.DATE_TIME_PATTERN);
   }
   public static Date parse(String date, String format) {
      try {
         return new SimpleDateFormat(format).parse(date);
      } catch (ParseException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
      return null;
   }
   public static boolean nowTimeBetween(String beginTimeStr, String endTimeStr)
         throws ParseException {
      SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm:ss");
      Long beginTime = dateFormat.parse(beginTimeStr).getTime();
      Long endTime = dateFormat.parse(endTimeStr).getTime();
      Long nowTime = dateFormat.parse(dateFormat.format(new Date()))
            .getTime();
      if (nowTime >= beginTime && nowTime <= endTime) {
         return true;
      }
      return false;
   }
   @SuppressWarnings("static-access")
   public static Date addDate(Date date, int days) {
      Calendar calendar = new GregorianCalendar();
      calendar.setTime(date);
      calendar.add(calendar.DATE, days);// 把日期往后增加一天.整数往后推,负数往前移动
      return calendar.getTime(); // 这个时间就是日期往后推一天的结果
   }
   @SuppressWarnings("static-access")
   public static Date addHour(Date date, int hour) {
      Calendar calendar = new GregorianCalendar();
      calendar.setTime(date);
      calendar.add(calendar.HOUR, hour);// 把日期往后增加一天.整数往后推,负数往前移动
      return calendar.getTime(); // 这个时间就是日期往后推一天的结果
   }
   @SuppressWarnings("static-access")
   public static Date addMinute(Date date, int minute) {
      Calendar calendar = new GregorianCalendar();
      calendar.setTime(date);
      calendar.add(calendar.MINUTE, minute);// 把日期往后增加一天.整数往后推,负数往前移动
      return calendar.getTime(); // 这个时间就是日期往后推一天的结果
   }
   @SuppressWarnings("static-access")
   public static Date addSecond(Date date, int second) {
      Calendar calendar = new GregorianCalendar();
      calendar.setTime(date);
      calendar.add(calendar.SECOND, second);// 把日期往后增加一天.整数往后推,负数往前移动
      return calendar.getTime(); // 这个时间就是日期往后推一天的结果
   }
   /**
    *
    * @param timestamp
    *            秒
    * @return
    */
   public static Date getDate(String timestamp) {
      return getDateBySecond(Long.parseLong(timestamp)); // 这个时间就是日期往后推一天的结果
   }
   /**
    *
    * @param timestamp
    *            毫秒
    * @return
    */
   public static Date getDateByMillis(long timestamp) {
      Calendar calendar = new GregorianCalendar();
      calendar.setTimeInMillis(timestamp);
      return calendar.getTime(); // 这个时间就是日期往后推一天的结果
   }
   /**
    *
    * @param timestamp
    *            秒
    * @return
    */
   public static Date getDateBySecond(long timestamp) {
      return getDateByMillis(timestamp * 1000); // 这个时间就是日期往后推一天的结果
   }
   public static long getTimestamp(Date date) {
      Calendar calendar = new GregorianCalendar();
      calendar.setTime(date);
      return calendar.getTimeInMillis(); // 这个时间就是日期往后推一天的结果
   }
   public static long DifferMillis(String timestamp, String nowTimestamp) {
      Date date1 = parse(timestamp, DATE_TIME_PATTERN);
      Date date2 = parse(nowTimestamp, DATE_TIME_PATTERN);
      return DifferMillis(date1, date2);
   }
   public static long DifferMillis(String timestamp, Date date) {
      Date date1 = parse(timestamp, DATE_TIME_PATTERN);
      return DifferMillis(date1, date);
   }
   public static String dateToStamp(String s) throws ParseException{
      String res;
      SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
      Date date = simpleDateFormat.parse(s);
      long ts = date.getTime();
      res = String.valueOf(ts);
      return res;
   }
   public static void main(String[] args) throws ParseException {
      System.out.println(DateUtils.getDateString(new Date(), "yyyy-MM-dd HH:mm:ss"));
   }
   public static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
}