日期工具類

  /**                                                                                                                            
   * 時間戳轉換成日期格式字符串                                                                                                               
   *                                                                                                                             
   * @param seconds 精確到秒的字符串                                                                                                     
   * @param format                                                                                                               
   * @return                                                                                                                     
   */                                                                                                                            
  public static String timeStampDate(long seconds, String format) {                                                              
      if (BaseStringUtils.textIsEmpty(format)) {                                                                                 
          format = "yyyy-MM-dd HH:mm";                                                                                           
      }                                                                                                                          
      return new SimpleDateFormat(format).format(new Date(seconds));                                                             
  }                                                                                                                              
                                                                                                                                 
  /*****                                                                                                                         
   * 時間戳轉換成Calendar                                                                                                              
   * @param stamp                                                                                                                
   * @return                                                                                                                     
   */                                                                                                                            
  public static Calendar timeStamp2Calendar(long stamp) {                                                                        
      Calendar calendar = Calendar.getInstance();                                                                                
      calendar.setTime(new Date(stamp));                                                                                         
      return calendar;                                                                                                           
  }                                                                                                                              
                                                                                                                                 
  /**                                                                                                                            
   * 時間戳轉換成日期格式字符串                                                                                                               
   *                                                                                                                             
   * @param seconds 精確到秒的字符串                                                                                                     
   * @param format                                                                                                               
   * @return                                                                                                                     
   */                                                                                                                            
  public static String timeStampWeek(long seconds, String format) {                                                              
      if (BaseStringUtils.textIsEmpty(format)) {                                                                                 
          format = "yyyy-MM-dd";                                                                                                 
      }                                                                                                                          
      return dateToWeek(timeStamp(seconds, format), format);                                                                     
  }                                                                                                                              
                                                                                                                                 
  /**                                                                                                                            
   * 日期轉星期                                                                                                                       
   *                                                                                                                             
   * @param datetime                                                                                                             
   * @return                                                                                                                     
   */                                                                                                                            
  private static String dateToWeek(String datetime, String format) {                                                             
      SimpleDateFormat f = new SimpleDateFormat(format);                                                                         
      String[] weekDays = {"週日", "週一", "週二", "週三", "週四", "週五", "週六"};                                                            
      Calendar cal = Calendar.getInstance(); // 獲得一個日曆                                                                           
      Date datet = null;                                                                                                         
      try {                                                                                                                      
          datet = f.parse(datetime);                                                                                             
          cal.setTime(datet);                                                                                                    
      } catch (ParseException e) {                                                                                               
          e.printStackTrace();                                                                                                   
      }                                                                                                                          
      int w = cal.get(Calendar.DAY_OF_WEEK) - 1; // 指示一個星期中的某天。                                                                  
      if (w < 0)                                                                                                                 
          w = 0;                                                                                                                 
      return weekDays[w];                                                                                                        
  }                                                                                                                              
                                                                                                                                 
  /**                                                                                                                            
   * 時間戳轉換成日期格式字符串                                                                                                               
   *                                                                                                                             
   * @param seconds 精確到秒的字符串                                                                                                     
   * @param format                                                                                                               
   * @return                                                                                                                     
   */                                                                                                                            
  public static String timeStamp(long seconds, String format) {                                                                  
      return new SimpleDateFormat(format).format(new Date(seconds));                                                             
  }                                                                                                                              
                                                                                                                                 
  /**                                                                                                                            
   * 時間戳轉換成周期字符串                                                                                                                 
   *                                                                                                                             
   * @param seconds 精確到秒的字符串                                                                                                     
   * @param format                                                                                                               
   * @return                                                                                                                     
   */                                                                                                                            
  public static String weekTimeStamp(Long seconds, String format) {                                                              
      String week = null;                                                                                                        
      Calendar cd = Calendar.getInstance();                                                                                      
      cd.setTime(new Date(seconds));                                                                                             
      int mydate = cd.get(Calendar.DAY_OF_WEEK);                                                                                 
      // 獲取指定日期轉換成星期幾                                                                                                            
      if (mydate == 1) {                                                                                                         
          week = "週日";                                                                                                           
      } else if (mydate == 2) {                                                                                                  
          week = "週一";                                                                                                           
      } else if (mydate == 3) {                                                                                                  
          week = "週二";                                                                                                           
      } else if (mydate == 4) {                                                                                                  
          week = "週三";                                                                                                           
      } else if (mydate == 5) {                                                                                                  
          week = "週四";                                                                                                           
      } else if (mydate == 6) {                                                                                                  
          week = "週五";                                                                                                           
      } else if (mydate == 7) {                                                                                                  
          week = "週六";                                                                                                           
      }                                                                                                                          
      return week;                                                                                                               
  }                                                                                                                              
                                                                                                                                 
  /**                                                                                                                            
   * 獲取當前時間,  年月日時分秒                                                                                                             
   *                                                                                                                             
   * @return                                                                                                                     
   */                                                                                                                            
  public static String createTime() {                                                                                            
      String time = (new SimpleDateFormat("yyyy-MM-dd HH:mm")).format(new Date()).toString();                                    
      return time;                                                                                                               
  }                                                                                                                              
                                                                                                                                 
  /**                                                                                                                            
   * 比較兩個時間或日期的大小                                                                                                                
   *                                                                                                                             
   * @param time1                                                                                                                
   * @param time2                                                                                                                
   * @return                                                                                                                     
   * @throws ParseException                                                                                                      
   */                                                                                                                            
  public static boolean compare(String time1, String time2) throws ParseException {                                              
      //如果想比較日期則寫成"yyyy-MM-dd"就可以了                                                                                               
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm");                                                           
      //將字符串形式的時間轉化爲Date類型的時間                                                                                                    
      Date a = sdf.parse(time1);                                                                                                 
      Date b = sdf.parse(time2);                                                                                                 
      //Date類的一個方法,如果a早於b返回true,否則返回false                                                                                        
      if (a.before(b))                                                                                                           
          return false;                                                                                                          
      else                                                                                                                       
          return true;                                                                                                           
                                                                                                                                 
  }                                                                                                                              
                                                                                                                                 
  /**                                                                                                                            
   * 獲取當前日期                                                                                                                      
   *                                                                                                                             
   * @return                                                                                                                     
   */                                                                                                                            
  public static String createDate() {                                                                                            
      String time = (new SimpleDateFormat("yyyy-MM-dd")).format(new Date()).toString();                                          
      return time;                                                                                                               
  }                                                                                                                              
                                                                                                                                 
  /**                                                                                                                            
   * 取得當前時間戳(精確到秒)                                                                                                               
   *                                                                                                                             
   * @return                                                                                                                     
   */                                                                                                                            
  public static String timeStamp() {                                                                                             
      long time = System.currentTimeMillis();                                                                                    
      String t = String.valueOf(time / 1000);                                                                                    
      return t;                                                                                                                  
  }                                                                                                                              
                                                                                                                                 
  public static String getWeek(String mMeek) {                                                                                   
      switch (mMeek) {                                                                                                           
          case "週一":                                                                                                             
              return "1";                                                                                                        
          case "週二":                                                                                                             
              return "2";                                                                                                        
          case "週三":                                                                                                             
              return "3";                                                                                                        
          case "週四":                                                                                                             
              return "4";                                                                                                        
          case "週五":                                                                                                             
              return "5";                                                                                                        
          case "週六":                                                                                                             
              return "6";                                                                                                        
          case "週日":                                                                                                             
              return "7";                                                                                                        
      }                                                                                                                          
      return "1";                                                                                                                
  }                                                                                                                              
                                                                                                                                 
  public static String getWeekDisable(int mMeek) {                                                                               
      switch (mMeek) {                                                                                                           
          case Calendar.MONDAY:                                                                                                  
              return "週一";                                                                                                       
          case Calendar.TUESDAY:                                                                                                 
              return "週二";                                                                                                       
          case Calendar.WEDNESDAY:                                                                                               
              return "週三";                                                                                                       
          case Calendar.THURSDAY:                                                                                                
              return "週四";                                                                                                       
          case Calendar.FRIDAY:                                                                                                  
              return "週五";                                                                                                       
          case Calendar.SATURDAY:                                                                                                
              return "週六";                                                                                                       
          case Calendar.SUNDAY:                                                                                                  
              return "週日";                                                                                                       
      }                                                                                                                          
      return "";                                                                                                                 
  }                                                                                                                              
                                                                                                                                 
  /**                                                                                                                            
   * 日期格式字符串轉換成時間戳                                                                                                               
   *                                                                                                                             
   * @param format 如:yyyy-MM-dd HH:mm:ss                                                                                         
   * @return                                                                                                                     
   */                                                                                                                            
  public static String dateTimeStamp(String date_str, String format) {                                                           
      try {                                                                                                                      
          SimpleDateFormat sdf = new SimpleDateFormat(format);                                                                   
          return String.valueOf(sdf.parse(date_str).getTime());                                                                  
      } catch (Exception e) {                                                                                                    
          e.printStackTrace();                                                                                                   
      }                                                                                                                          
      return "";                                                                                                                 
  }                                                                                                                              
                                                                                                                                 
  /**                                                                                                                            
   * 日期格式字符串轉換成時間戳                                                                                                               
   *                                                                                                                             
   * @param format 如:yyyy-MM-dd HH:mm:ss                                                                                         
   * @return                                                                                                                     
   */                                                                                                                            
  public static Long dateTimeStampLong(String date_str, String format) {                                                         
      Long data = 0L;                                                                                                            
      try {                                                                                                                      
          SimpleDateFormat sdf = new SimpleDateFormat(format);                                                                   
          return sdf.parse(date_str).getTime();                                                                                  
      } catch (Exception e) {                                                                                                    
          e.printStackTrace();                                                                                                   
      }                                                                                                                          
      return data;                                                                                                               
  }                                                                                                                              
                                                                                                                                 
  private static Date getThisWeekMonday(Date date) {                                                                             
      Calendar cal = Calendar.getInstance();                                                                                     
      if (date != null)                                                                                                          
          cal.setTime(date);                                                                                                     
      // 獲得當前日期是一個星期的第幾天                                                                                                         
      int dayWeek = cal.get(Calendar.DAY_OF_WEEK);                                                                               
      if (1 == dayWeek) {                                                                                                        
          cal.add(Calendar.DAY_OF_MONTH, -1);                                                                                    
      }                                                                                                                          
      // 設置一個星期的第一天,按中國的習慣一個星期的第一天是星期一                                                                                           
      cal.setFirstDayOfWeek(Calendar.MONDAY);                                                                                    
      // 獲得當前日期是一個星期的第幾天                                                                                                         
      int day = cal.get(Calendar.DAY_OF_WEEK);                                                                                   
      // 根據日曆的規則,給當前日期減去星期幾與一個星期第一天的差值                                                                                           
      cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);                                                                     
                                                                                                                                 
      return cal.getTime();                                                                                                      
  }                                                                                                                              
                                                                                                                                 
  public static String getDefaultDate(Date date) {                                                                               
      return new SimpleDateFormat("yyyy-MM-dd").format(getThisWeekMonday(date)) + " 00:00";                                      
  }                                                                                                                              
                                                                                                                                 
  public static long getThisFirstDay(String dateStr, String format) {                                                            
      try {                                                                                                                      
          Calendar current = Calendar.getInstance();                                                                             
          Calendar cal = Calendar.getInstance();                                                                                 
          cal.setTime(new SimpleDateFormat(format).parse(dateStr));                                                              
          if (current.get(Calendar.MONTH) == cal.get(Calendar.MONTH))                                                            
              return cal.getTime().getTime();                                                                                    
          else                                                                                                                   
              //獲取當前月第一天                                                                                                         
              return getFirstDayCurrentMonth().getTime().getTime();                                                              
      } catch (ParseException e) {                                                                                               
          return new Date().getTime();                                                                                           
      }                                                                                                                          
  }                                                                                                                              
                                                                                                                                 
  /*****                                                                                                                         
   * 將時間戳數組轉化爲格式化數組                                                                                                              
   * @param times                                                                                                                
   * @param format                                                                                                               
   * @return                                                                                                                     
   */                                                                                                                            
  public static List<String> formatList(List<String> times, String format) {                                                     
      List<String> newTime = new ArrayList<>();                                                                                  
      if (times == null || times.isEmpty()) {                                                                                    
          return newTime;                                                                                                        
      }                                                                                                                          
      for (String str : times) {                                                                                                 
          String forTime = timeStamp(Long.parseLong(str), format);                                                               
          if (newTime.contains(forTime))                                                                                         
              continue;                                                                                                          
          newTime.add(forTime);                                                                                                  
      }                                                                                                                          
      return newTime;                                                                                                            
  }                                                                                                                              
                                                                                                                                 
  /****                                                                                                                          
   * 獲取前月的第一天                                                                                                                    
   * @return                                                                                                                     
   */                                                                                                                            
  public static Calendar getFirstDayLastMonth() {                                                                                
      Calendar calendar = Calendar.getInstance();//獲取當前日期                                                                        
      calendar.add(Calendar.MONTH, -1);                                                                                          
      calendar.set(Calendar.DAY_OF_MONTH, 1);//設置爲1號,當前日期既爲本月第一天                                                                 
      return calendar;                                                                                                           
  }                                                                                                                              
                                                                                                                                 
  /****                                                                                                                          
   * 獲取前月的最後一天                                                                                                                   
   * @return                                                                                                                     
   */                                                                                                                            
  public static Calendar getLastDayLastMonth() {                                                                                 
      Calendar calendar = Calendar.getInstance();                                                                                
      calendar.set(Calendar.DAY_OF_MONTH, 0);//設置爲1號,當前日期既爲本月第一天                                                                 
      return calendar;                                                                                                           
  }                                                                                                                              
                                                                                                                                 
  /****                                                                                                                          
   * 獲取當前月第一天                                                                                                                    
   * @return                                                                                                                     
   */                                                                                                                            
  public static Calendar getFirstDayCurrentMonth() {                                                                             
      Calendar calendar = Calendar.getInstance();                                                                                
      calendar.add(Calendar.MONTH, 0);                                                                                           
      calendar.set(Calendar.DAY_OF_MONTH, 1);//設置爲1號,當前日期既爲本月第一天                                                                 
      return calendar;                                                                                                           
  }                                                                                                                              
                                                                                                                                 
  /***                                                                                                                           
   * 獲取當前月最後一天                                                                                                                   
   * @return                                                                                                                     
   */                                                                                                                            
  public static Calendar getLastDayCurrentMonth() {                                                                              
      Calendar calendar = Calendar.getInstance();                                                                                
      calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));                                     
      return calendar;                                                                                                           
  }                                                                                                                              
                                                                                                                                 
  /**                                                                                                                            
   * 獲取當前時間的後一天時間                                                                                                                
   *                                                                                                                             
   * @param cl                                                                                                                   
   */                                                                                                                            
  public static Calendar getAfterDay(Calendar cl) {                                                                              
      // TODO Auto-generated method stub                                                                                         
      // 使用roll方法進行回滾到後一天的時間                                                                                                     
      // cl.roll(Calendar.DATE, 1);                                                                                              
      // 使用set方法直接設置時間值                                                                                                          
      int day = cl.get(Calendar.DATE);                                                                                           
      cl.set(Calendar.DATE, day + 1);                                                                                            
      return cl;                                                                                                                 
  }                                                                                                                              
                                                                                                                                 
  /**                                                                                                                            
   * 獲取時間的前一天時間                                                                                                                  
   *                                                                                                                             
   * @param cl                                                                                                                   
   */                                                                                                                            
  public static Calendar getBeforeDay(Calendar cl) {                                                                             
      // TODO Auto-generated method stub                                                                                         
      // 使用roll方法進行向前回滾                                                                                                          
      // cl.roll(Calendar.DATE, -1);                                                                                             
      // 使用set方法直接進行設置                                                                                                           
      int day = cl.get(Calendar.DATE);                                                                                           
      cl.set(Calendar.DATE, day - 1);                                                                                            
      return cl;                                                                                                                 
  }                                                                                                                              
                                                                                                                                 
  /**                                                                                                                            
   * 設置時間                                                                                                                        
   *                                                                                                                             
   * @param year                                                                                                                 
   * @param month                                                                                                                
   * @param date                                                                                                                 
   * @return                                                                                                                     
   */                                                                                                                            
  public static Calendar setCalendar(int year, int month, int date) {                                                            
      Calendar cl = Calendar.getInstance();                                                                                      
      cl.set(year, month - 1, date);                                                                                             
      return cl;                                                                                                                 
  }                                                                                                                              
                                                                                                                                 
  /*****                                                                                                                         
   * 格式化日期                                                                                                                       
   * @param year                                                                                                                 
   * @param month                                                                                                                
   * @param day                                                                                                                  
   * @return                                                                                                                     
   */                                                                                                                            
  public static String forMatDateYYMMDD(int year, int month, int day) {                                                          
      month += 1;                                                                                                                
      return year + "-" + (month < 10 ? "0" + month : month) + "-" + (day < 10 ? "0" + day : day);                               
  }                                                                                                                              
                                                                                                                                 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章