• JAVA一些常用的时间操作


    项目中经常有对时间进行处理的需求,下面是一些常用的操作整理,方便以后再次使用以及做相关复习。

    1.字符串转换为日期

     1  /**
     2      * 字符串转换为日期
     3      * @param dateStr 需要转换的日期
     4      * @param dateFormat 日期格式yyyy-MM-dd/yyyy-MM-dd HH:mm:ss
     5      */
     6     public static Date toDate(String dateStr, SimpleDateFormat dateFormat) throws ParseException{
     7         Date date = null;
     8         try {
     9             date = dateFormat.parse(dateStr);
    10         } catch (ParseException e) {
    11             logger.debug("Fail to convert String to Date, {}", dateStr);
    12         }
    13         return date;
    14     }

    2.时间戳转日期

        /**
         * 时间戳转日期
         * @param date
         * @return
         */
        public static String dateToTime(long time, SimpleDateFormat dateFormat) throws ParseException{
             String data = null;
             try {
                 dateFormat.format(new Date(time*1000));    
             } catch (Exception e) {
                 logger.debug("Fail to convert long to Date, {}", time);
             }
             return data;
        }

    3.日期格式化成字符串

        /**
         * 日期格式化成字符串
         * @param date
         * @param dateFormat
         * @return
         * @throws ParseException
         */
        public static String toString(Date date, SimpleDateFormat dateFormat) throws ParseException{
            return dateFormat.format(date);
        }

    4.获取指定日期之前或之后的日期 ,十分秒为00:00:00

        /**
         * 获取指定日期之前或之后的日期
         * @param date 
         * @param num 正数为之后,负数为之前
         * @return yyyy-MM-dd 00:00:00
         */
        public static Date getSpecificDate(Date date, int num){
            Calendar todayCal = Calendar.getInstance();
            todayCal.setTime(date);
    
            Calendar c = Calendar.getInstance();
            c.set(todayCal.get(Calendar.YEAR), todayCal.get(Calendar.MONTH), todayCal.get(Calendar.DAY_OF_MONTH) + num, 0, 0, 0);
            return c.getTime();
        }

    5.获取指定日期之前或之后的日期 ,时分秒为当前的

        /**
         * 获取指定日期之前或之后的日期
         * @param date 
         * @param num 正数为之前,负数为之后
         * @return yyyy-MM-dd + 当前的时分秒
         */
        public static Date getSpecificDateAndHhMmSs(Date date,int num){
            Calendar c = Calendar.getInstance(); 
            c.setTime(date); 
            int day=c.get(Calendar.DATE); 
            c.set(Calendar.DATE,day - num); 
            return c.getTime(); 
        }

    6.将time类型的时间字符串 转换成 时、分

        /**
         * 将time类型的时间字符串 转换成 时、分
         * HH-mm-ss -->>  HH-mm
         * @param time 
         * @return
         */
        public static String timeToHHMM(String time){
            return time.substring(0, time.length() - 3);
        }

    7.获取某个日期的时、分

        /**
         * 获取某个日期的时、分
         * @param date
         * @return HH-mm
         */
        public static String getHM(Date date){
            Calendar ca = Calendar.getInstance(); 
            ca.setTime(date);
            Integer hour = ca.get(Calendar.HOUR_OF_DAY);//小时 
            Integer minute = ca.get(Calendar.MINUTE);//
            String rs_hour = hour.toString();
            String rs_minute = minute.toString();
    
            if (rs_hour.length() == 1){
                rs_hour = "0" + hour;
            }
            if(rs_minute.length() == 1){
                rs_minute = "0" + minute;
            }
    
            return rs_hour + ":" + rs_minute;
        }

    8.time类型的时间字符串 -->> 零点开始的秒数

        /**
         * time类型的时间字符串 -->> 零点开始的秒数
         * @param time HH-mm / HH-mm-ss
         * @return
         */
        public static Integer timeToSeconds(String time){
              String[] timeSplit = null;
              int hours = 0,minutes = 0,seconds = 0;
              try {
                  timeSplit = time.split(":");
                  if (timeSplit.length == 2) {
                      hours = Integer.valueOf(timeSplit[0])*60*60;
                      minutes = Integer.valueOf(timeSplit[1])*60;
                  }else if(timeSplit.length == 3){
                      hours = Integer.valueOf(timeSplit[0])*60*60;
                      minutes = Integer.valueOf(timeSplit[1])*60;
                      seconds = Integer.valueOf(timeSplit[2]);
                  }else{
                      logger.debug("Fail to convert the time, {}", time);
                  }
              } catch (Exception e) {
                  logger.debug("Fail to convert the time, {}", time);
                  throw e;
              }
    
            return hours + minutes + seconds;
        }

    9.零点开始的秒数转时间 -->> HH-mm-ss

        /**
         * 零点开始的秒数转时间 -->> HH-mm-ss
         * @param durationSeconds
         * @return
         */
        public static String getDuration(int durationSeconds){  
            int hours = durationSeconds /(60*60);  
            int leftSeconds = durationSeconds % (60*60);  
            int minutes = leftSeconds / 60;  
            int seconds = leftSeconds % 60;  
    
            StringBuffer sBuffer = new StringBuffer();  
            sBuffer.append(addZeroPrefix(hours));  
            sBuffer.append(":");  
            sBuffer.append(addZeroPrefix(minutes));  
            sBuffer.append(":");  
            sBuffer.append(addZeroPrefix(seconds));  
    
            return sBuffer.toString();  
        }  
    
        public static String addZeroPrefix(int number){  
            if(number < 10)  
                return "0"+number;  
            else 
                return ""+number;  
        }

    10.比较两个日期相差的秒数

        /**
         * 比较两个日期相差的秒数
         * @param startDate
         * @param endDate
         * @return
         */
        public static int getTimeSeconds(Date startDate,Date endDate) {
              long a = endDate.getTime();
              long b = startDate.getTime();
              return (int)((a - b) / 1000);
        }

    11.判断两个时间段是否存在交集

        /**
         * 比较两个日期相差的秒数
         * @param startDate
         * @param endDate
         * @return
         */
        public static int getTimeSeconds(Date startDate,Date endDate) {
              long a = endDate.getTime();
              long b = startDate.getTime();
              return (int)((a - b) / 1000);
        }

    12.获取指定日期是星期几(1-7分别代表周一至周日)

        /**
         * 获取指定日期是星期几(1-7分别代表周一至周日)
         * @return
         */
        public static int DayOfWeek(Date date){
            Calendar now = Calendar.getInstance();
            now.setTime(date);
            boolean isFirstDay = (now.getFirstDayOfWeek() == Calendar.SUNDAY);
            int weekday = now.get(Calendar.DAY_OF_WEEK);
            if(isFirstDay){
                weekday = weekday - 1;
                if(weekday == 0){
                    weekday = 7;
                }
            }
            return weekday;
        }
    全部为原创文章,转载请注明。
    个人站点helijun.com.cn,欢迎指导交流....

  • 相关阅读:
    java的泛型
    JAVA集合类--(一闪而过)
    java面向对象- -一闪而过
    进制转换之二进制与十进制转换
    跳跃表-原理及Java实现
    Excel二次开发相关代码
    程序员学炒股(7) 股市心得
    程序员学炒股(7) 股指期货收盘价对第二天开盘价有影响吗?
    程序员学炒股(6) 让我们来看一下7月份A股的表现
    程序员学炒股(5) 股指交割日效应是否存在?
  • 原文地址:https://www.cnblogs.com/liliangel/p/5292944.html
Copyright © 2020-2023  润新知