• Java中的日期处理


    获取系统日期时间,数据返回类型:Date

    import java.util.Date;
    
    public class DateUtils{
    
      public static Date getNowDate() {
    
          return new Date();
      }
    
    }
    

    字符串日期时间转换成Date类型的日期时间,数据返回类型:Date

    import java.util.Date;
    
    public class DateUtils{
    
      public static Date getDateTime(String dateTime) {
           
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          Date Date = new Date();
          try {
              Date = sdf.parse(dateTime);
          } catch (ParseException e) {
              e.printStackTrace();
          }
          return Date;
      }
    
    }
    

    获取系统日期时间,数据返回类型:Date

    import java.util.Date;
    import java.time.LocalDateTime;
    import java.time.ZoneId;
    
    public class DateUtils{
    
      public static Date getCurrentDate() {
            
          return Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant());
      }
    
    }
    

    获取系统日期时间,数据返回类型:LocalDateTime

    import java.time.LocalDateTime;
    
    public class DateUtils{
    
      public static LocalDateTime getCurrentLocalDateTime() {
          
          return LocalDateTime.now();
      }
    
    }
    

    获取日期文件路径,即:年/月/日,如:2018/08/08,数据返回类型:String

    import java.util.Date;
    import org.apache.commons.lang3.time.DateFormatUtils;
    
    public class DateUtils{
    
      public static final String getDatePath() {
    
          return DateFormatUtils.format(new Date(), "yyyy/MM/dd");
      }
    
    }
    

    获取系统日期时间,字符串格式:年-月-日,如:2018-08-08,数据返回类型:String

    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    
    public class DateUtils{
    
      public final static String DATE_PATTERN = "yyyy-MM-dd";
    
      public static String getCurrentYMD() {
            
          return LocalDateTime.now().format(DateTimeFormatter.ofPattern(DATE_PATTERN));
      }
    
    }
    

    获取系统日期时间,字符串格式:年-月-日 时:分:秒,如:2018-08-08 08:08:08,数据返回类型:String

    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    
    public class DateUtils{
    
      public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
    
      public static String getCurrentYMDHMS() {
            
          return LocalDateTime.now().format(DateTimeFormatter.ofPattern(DATE_TIME_PATTERN));
      }
    
    }
    

    获取系统日期时间,字符串格式:年月日时分秒毫秒,如:20180808080808888,数据返回类型:String

    import java.util.Calendar;
    
    public class DateUtils{
    
      public static String getDateTimeStr() {
            
          Calendar Cld = Calendar.getInstance();
          int YY = Cld.get(Calendar.YEAR);
          String MM = Cld.get(Calendar.MONTH) + 1 + "";
          if (Cld.get(Calendar.MONTH) + 1 < 10) {
              MM = "0" + MM;
          }
          String DD = Cld.get(Calendar.DATE) + "";
          if (Cld.get(Calendar.DATE) < 10) {
              DD = "0" + DD;
          }
          String HH = Cld.get(Calendar.HOUR_OF_DAY) + "";
          if (Cld.get(Calendar.HOUR_OF_DAY) < 10) {
              HH = "0" + HH;
          }
          String mm = Cld.get(Calendar.MINUTE) + "";
          if (Cld.get(Calendar.MINUTE) < 10) {
              mm = "0" + mm;
          }
          String SS = Cld.get(Calendar.SECOND) + "";
          if (Cld.get(Calendar.SECOND) < 10) {
              SS = "0" + SS;
          }
          int MI = Cld.get(Calendar.MILLISECOND);
          return YY + MM + DD + HH + mm + SS + MI;
      }
    
    }
    

    获取上个月最后一天的最后一秒,数据返回类型:Date

    import java.util.Calendar;
    
    public class DateUtils{
    
      public static Date getLastMonthLastDay() {
    
          Calendar calendar = Calendar.getInstance();
          int month = calendar.get(Calendar.MONTH);
          calendar.set(Calendar.MONTH, month - 1);
          calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
          calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMaximum(Calendar.HOUR_OF_DAY));
          calendar.set(Calendar.MINUTE, calendar.getActualMaximum(Calendar.MINUTE));
          calendar.set(Calendar.SECOND, calendar.getActualMaximum(Calendar.SECOND));
          return calendar.getTime();
      }
    
    }
    

    计算两个时间的时间差(向上取整,单位:天),数据返回类型:int

    import java.util.Date;
    
    public class DateUtils{
    
      public static int getDiffDays(Date yesterday, Date today) {
          
          if (yesterday == null || today== null) {
              throw new NullPointerException("by calculating the difference between two [java.util.Date]");
          }
          double yDouble = today.getTime() - yesterday.getTime();
          double oneDouble = 24 * 60 * 60 * 1000;//一天的时间
          double days = yDouble / oneDouble;
          return (int) Math.ceil(days);
      }
    
    }
    

    计算两个时间的时间差(向上取整,单位:天),只计算工作日(24小时为一天),数据返回类型:int

    import java.util.Date;
    import java.util.Calendar;
    
    public class DateUtils{
    
      public static int getDiffDayWithOutWeekends(Date yesterday, Date today) {
           
          Calendar calendar = Calendar.getInstance();
          if (yesterday == null || today== null) {
              throw new NullPointerException("by calculating the difference between two [java.util.Date]");
          }
          double yDouble = today.getTime() - yesterday.getTime();
          double oneDouble = 24 * 60 * 60 * 1000;//一天的时间
          int days = (int) (yDouble / oneDouble);
          int sum = 0;
          for (int i = 0; i < days; i++) {
              calendar.setTime(now);
              calendar.add(Calendar.DAY_OF_YEAR, -i);
              if (isWeekend(calendar)) {
                  sum++;
              }
          }
          // subtract weekends
          days = days - sum;
          return days;
      }
    }
    

    判断一个日期是否是周末(星期六、星期日),数据返回类型:boolean

    import java.util.Date;
    import java.util.Calendar;
    
    public class DateUtils{
    
        public static boolean isWeekend(Date now) {
            
            Calendar cal = Calendar.getInstance();
            cal.setTime(Objects.requireNonNull(now));
            int week = cal.get(Calendar.DAY_OF_WEEK) - 1;
            return week == 6 || week == 0;
        }
    }
    

    根据时间偏移量得到新的时间,数据返回类型:String

    import java.util.Date;
    import java.util.Calendar;
    
    public class DateUtils{
    
        /**
         * 根据时间偏移量得到新的时间
         *
         * @param way      (1-代表天数,2-代表月数)
         * @param time     (时间偏移量,整数往后推,负数往前移动)
         * @param type     (格式化时间类型,1-"yyyy-MM-dd",2-"yyyy-MM-dd HH:mm:ss")
         * @param datetime (传入时间)
         * @return 得到新的时间
         */
        public static String getDate(int way, int time, int type, Date datetime) {
            
            Date date = new Date(); // 获取时间
            if (datetime != null) {
                date = datetime;
            }
            Calendar calendar = new GregorianCalendar();
            calendar.setTime(date);
            if (way == 1) {
                calendar.add(Calendar.DATE, time); // 把日期往后增加天数,整数往后推,负数往前移动
            }
            if (way == 2) {
                calendar.add(Calendar.MONTH, time); // 把日期往后增加月数,整数往后推,负数往前移动
            }
            date = calendar.getTime(); // 这个时间就是日期往后推一天的结果
            String dateString = "";
            if (type == 1) {
                SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
                dateString = formatter.format(date);
            } else if (type == 2) {
                SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                dateString = formatter.format(date);
            }
            return dateString;
        }
    
    }
    

    计算某个日期加上N个月之后的日期

    import java.util.Date;
    import java.util.Calendar;
    
    public class DateUtils{
    
        /**
         * 计算某个日期加上N个月之后的日期
         *
         * @param date 当前时间
         * @param moth 月数
         * @return 结果
         */
        public static String dataAddMoth(Date date, int moth) {
            
            SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(Calendar.MONTH, moth);
            return fmt.format(calendar.getTime());
        }
    
    }
    

    传入字符串格式的日期时间,获取N小时后/N小时前的时间,数据返回类型:String

    import java.util.Date;
    import java.util.Calendar;
    import java.text.SimpleDateFormat;
    
    public class DateUtils{
    
        /**
         * 计算传入参数时间加上N个月之后的日期
         *
         * @param dateTime当前时间
         * @param i 小时数(正数向后推,负数向前推)
         * @return 结果
         */
        public static String getDateTimeString(String dateTime, int i) {
    
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = new Date();
            try {
                date = sdf.parse(dateTime);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(Calendar.HOUR_OF_DAY, i);
            return sdf.format(calendar.getTime());
        }
    
    }
    

    获取n天前的所有日期,数据返回类型:List

    import java.util.Date;
    import java.util.Calendar;
    import java.text.SimpleDateFormat;
    
    public class DateUtils{
    
        public final static String DATE_PATTERN = "yyyy-MM-dd";
    
        public static String format(Date date) {
            
            return format(date, DATE_PATTERN);
        }
    
        public static String format(Date date, String pattern) {
            
            if (date != null) {
                SimpleDateFormat df = new SimpleDateFormat(pattern);
                return df.format(date);
            }
            return null;
        }
    
        /**
         * 获取n天前的所有日期
         *
         * @param i 天数(正数向后推,负数向前推)
         * @return 结果
         */
        public static List<String> getDays(int n) {
            
            List<String> dateList = new ArrayList<String>();
            for (int j = -n; j < 0; j++) {
                Calendar cal = Calendar.getInstance();
                cal.add(Calendar.DAY_OF_MONTH, j);  // 设置为前j天
                String tempDate = format(cal.getTime());
                dateList.add(tempDate);
            }
            return dateList;
        }
    
    }
    

    当天开始时间,数据返回类型:String

    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    
    public class DateUtils{
    
       public static final DateTimeFormatter DFY_MD_HMS = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    
       public static String todayStart() {
    
            LocalDateTime today_start = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
            return today_start.format(DFY_MD_HMS);
        }
    
    }
    

    当天结束时间,数据返回类型:String

    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    
    public class DateUtils{
    
        public static String todayEnd() {
    
            LocalDateTime today_start = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
            return today_start.format(DFY_MD_HMS);
        }
    }
    

    获取两个日期之间的所有日期列表,数据返回类型:List

    import java.time.LocalDate;
    
    public class DateUtils{
    
        public static List<LocalDate> getMiddleDate(LocalDate begin, LocalDate end) {
            List<LocalDate> localDateList = new ArrayList<>();
            long length = end.toEpochDay() - begin.toEpochDay();
            for (long i = length; i >= 0; i--) {
                localDateList.add(end.minusDays(i));
            }
            return localDateList;
        }
     
    }
    

    开始日期与结束日期之间相差的天数,数据返回类型:long

    import java.time.LocalDateTime;
    import java.time.temporal.ChronoUnit;
    
    public class DateUtils{
    
        public static long getMiddleDate(LocalDateTime startDateTime, LocalDateTime endDateTime) {
    
            return ChronoUnit.DAYS.between(startDateTime, endDateTime);
        }
     
    }
    

    同一天日期比较,数据返回类型:boolean

    import java.time.ZonedDateTime;
    import java.time.ZoneId;
    import java.util.Date;
    
    public class DateUtils{
    
        public static ZoneId ZONE_ID_BJ = ZoneId.of("GMT+08:00");
    
        public static boolean sameDate(Date d1, Date d2) {
            try {
                return ZonedDateTime.ofInstant(d1.toInstant(), ZONE_ID_BJ).toLocalDate().isEqual(
                        ZonedDateTime.ofInstant(
                                d2.toInstant(), ZONE_ID_BJ).toLocalDate());
            } catch (Exception e) {
                return false;
            }
        }
     
    }
    

    日期比较,数据返回类型:boolean

    import java.time.ZonedDateTime;
    import java.time.ZoneId;
    import java.util.Date;
    
    public class DateUtils{
    
        public static ZoneId ZONE_ID_BJ = ZoneId.of("GMT+08:00");
    
        public static boolean compareDate(Date d1, Date d2) {
            try {
                return ZonedDateTime.ofInstant(d1.toInstant(), ZONE_ID_BJ).toLocalDateTime().isAfter(
                        ZonedDateTime.ofInstant(
                                d2.toInstant(), ZONE_ID_BJ)
                                .toLocalDateTime());
            } catch (Exception e) {
                return false;
            }
        }
     
    }
    

    LocalDateTime转时间戳,数据返回类型:Long

    import java.time.LocalDateTime;
    import java.time.ZoneId;
    
    public class DateUtils{
    
        public static Long getTimeStamp(LocalDateTime localDateTime) {
            return localDateTime.atZone(ZoneId.systemDefault()).toEpochSecond();
        }
     
    }
    

    时间戳转LocalDateTime,数据返回类型:LocalDateTime

    import java.time.LocalDateTime;
    import java.time.ZoneId;
    import java.time.OffsetDateTime;
    
    public class DateUtils{
    
        public static LocalDateTime fromTimeStamp(Long timeStamp) {
            return LocalDateTime.ofEpochSecond(timeStamp, 0, OffsetDateTime.now().getOffset());
        }
     
    }
    

    LocalDateTime转Date(Jdk8后,不推荐使用Date),数据返回类型:Date

    import java.time.LocalDateTime;
    import java.time.ZoneId;
    
    public class DateUtils{
    
        /**
         * LocalDateTime 转 Date
         * Jdk8 后 不推荐使用 {@link Date} Date
         *
         * @param localDateTime /
         * @return /
         */
        public static Date toDate(LocalDateTime localDateTime) {
            return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
        }
    
    }
    

    LocalDate转Date,数据返回类型:Date

    import java.time.LocalDateTime;
    import java.time.ZoneId;
    
    public class DateUtils{
    
        /**
         * LocalDate 转 Date
         * Jdk8 后 不推荐使用 {@link Date} Date
         *
         * @param localDate /
         * @return /
         */
        public static Date toDate(LocalDate localDate) {
            return toDate(localDate.atTime(LocalTime.now(ZoneId.systemDefault())));
        }
    
    }
    

    Date转LocalDateTime,数据返回类型:LocalDateTime

    import java.time.LocalDateTime;
    import java.time.ZoneId;
    
    public class DateUtils{
    
        /**
         * Date转 LocalDateTime
         * Jdk8 后 不推荐使用 {@link Date} Date
         *
         * @param date /
         * @return /
         */
        public static LocalDateTime toLocalDateTime(Date date) {
            return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
        }
    
    }
    

    LocalDateTime日期格式化,数据返回类型:String

    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    
    public class DateUtils{
    
        /**
         * 日期 格式化
         *
         * @param localDateTime /
         * @param patten        /
         * @return /
         */
        public static String localDateTimeFormat(LocalDateTime localDateTime, String patten) {
            DateTimeFormatter df = DateTimeFormatter.ofPattern(patten);
            return df.format(localDateTime);
        }
    
    }
    

    字符串转LocalDateTime,字符串格式 yyyy-MM-dd / yyyy-MM-dd HH:mm:ss,数据返回类型:LocalDateTime

    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    
    public class DateUtils{
    
        /**
         * 字符串转 LocalDateTime ,字符串格式 yyyy-MM-dd / yyyy-MM-dd HH:mm:ss
         *
         * @param localDateTime /
         * @return /
         */
        public static LocalDateTime parseLocalDateTimeFormat(String localDateTime, String pattern) {
            
            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
            return LocalDateTime.from(dateTimeFormatter.parse(localDateTime));
        }
    
    }
    

    获取当天的每个小时,数据返回类型:List

    import java.util.Date;
    import java.util.Calendar;
    import java.text.SimpleDateFormat;
    
    public class DateUtils{
    
        public static List<String> findHoursStr() {
            
            Date day = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String s = sdf.format(day);
            Date date = null;
            try {
                date = sdf.parse(s);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            ArrayList<String> hoursStrList = new ArrayList<String>();
            hoursStrList.add(format.format(date));
            for (int i = 1; i < 24; i++) {
                Calendar cal = Calendar.getInstance();
                cal.setTime(Objects.requireNonNull(date));
                cal.add(Calendar.HOUR, 1);
                date = cal.getTime();
                String hourStr = format.format(date);
                hoursStrList.add(hourStr);
            }
            return hoursStrList;
        }
    }
    

    获取服务器启动时间,数据返回类型:Date

    import java.util.Date;
    import java.lang.management.ManagementFactory;
    
    public class DateUtils{
    
        public static Date getServerStartDate() {
            long time = ManagementFactory.getRuntimeMXBean().getStartTime();
            return new Date(time);
        }
    
    }
    

    计算两个时间差,数据返回类型:String

    import java.util.Date;
    
    public class DateUtils{
    
        public static String getDatePoor(Date endDate, Date nowDate) {
    
            long nd = 1000 * 24 * 60 * 60;
            long nh = 1000 * 60 * 60;
            long nm = 1000 * 60;
            // long ns = 1000;
            // 获得两个时间的毫秒时间差异
            long diff = endDate.getTime() - nowDate.getTime();
            // 计算差多少天
            long day = diff / nd;
            // 计算差多少小时
            long hour = diff % nd / nh;
            // 计算差多少分钟
            long min = diff % nd % nh / nm;
            // 计算差多少秒//输出结果
            // long sec = diff % nd % nh % nm / ns;
            return day + "天" + hour + "小时" + min + "分钟";
        }
    }
    

    计算两个时间分钟差,数据返回类型:String

    import java.time.LocalDateTime;
    import java.time.ZoneId;
    
    public class DateUtils{
    
        public static String getMinutePoor(Date endDate, Date nowDate) {
            
            long nd = 1000 * 24 * 60 * 60;
            long nh = 1000 * 60 * 60;
            long nm = 1000 * 60;
            // 获得两个时间的毫秒时间差异
            long diff = endDate.getTime() - nowDate.getTime();
            // 计算差多少分钟
            long min = diff / nm;
            if (min < 1) {
                return "1分钟";
            }
            return min + "分钟";
        }
    
    }
    

    判断两个日期是否是同一周,数据返回类型:boolean

    import java.util.Date;
    import java.util.Calendar;
    
    public class DateUtils{
    
        public static boolean isSameWeek(Date startTime, Date endTime) {
            
            Calendar calendar = Calendar.getInstance();
            calendar.setFirstDayOfWeek(Calendar.MONDAY); // 设置一周的第一天是星期几
            calendar.setTime(startTime);
            int startWeek = calendar.get(Calendar.WEEK_OF_YEAR);
            calendar.setTime(endTime);
            int endWeek = calendar.get(Calendar.WEEK_OF_YEAR);
            if (endWeek == startWeek) {
                return true;
            }
            return false;
        }
    }
    

    判断两个日期是否是同一天,数据返回类型:boolean

    import java.time.LocalDateTime;
    import java.time.ZoneId;
    
    public class DateUtils{
    
        public static boolean isSameTime(Date startTime, Date endTime, String pattern) {
            SimpleDateFormat sdf = new SimpleDateFormat(pattern);
            String start = sdf.format(startTime); // 参数时间
            String end = sdf.format(endTime); // 当前时间
            if (start.equals(end)) {
                return true;
            }
            return false;
        }
    }
    

    生死看淡、不服就干

    我们都知道我们正在为自由而奋斗,根据我们自己的观念来决定我们的一生。 We know that we are fighting for freedom to shape our life according to our own ideas.
  • 相关阅读:
    VirtualBox安装
    记一次修改fstab挂载参数
    Debian其实有提供附带了各种桌面的安装镜像
    记一次使用unzip命令
    记一次给iPhone 6越狱
    浅谈.Net中内置的一种特殊的引用类型 -- String类型
    .Net中的静态类和非静态类、静态成员和非静态成员
    .Net子窗体给父窗体传值的几种方法
    int、float、double In .Net之相互转换
    车厢重组
  • 原文地址:https://www.cnblogs.com/focus-yun/p/14683847.html
Copyright © 2020-2023  润新知