首页 > 编程 > Java > 正文

详解JAVA常用的时间操作【实用】

2019-11-26 13:28:26
字体:
来源:转载
供稿:网友

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

1.字符串转换为日期

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

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;  }

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持武林网!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表