JAVA에서 자주 사용하는 시간 조작에 대한 상세한 설명[실용]

6616 단어 java시간 조작
프로젝트에서 시간에 대한 처리에 대한 수요가 자주 있는데 다음은 자주 사용하는 조작 정리로 나중에 다시 사용하고 관련 복습을 하는 데 편리하다.
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. 지정된 날짜를 얻기 전이나 그 후의 날짜, 10분 초는 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     、 
   * 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 형식의 시간 문자열 -->> 0시에 시작하는 초

  /**
   * 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.0시부터 초회전 시간-->H-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;
  }
이상은 본문의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 일정한 도움을 줄 수 있는 동시에 저희를 많이 지지해 주시기 바랍니다!

좋은 웹페이지 즐겨찾기