Java获取当前系统时间的前N小时时间

Java获取当前系统时间的前N小时时间
先说一下代码中存在的一个问题

   /**
    * 当前时间向推几小时
    * @param ihour 小时
    * @return String
    */
   public static String getBeforeByHourTime(int ihour){
      String returnstr = "";
      Calendar calendar = Calendar.getInstance();
      calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - ihour);
      SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      returnstr = df.format(calendar.getTime());
      return returnstr;
  }

但是这个代码存在问题,假如是凌晨1点向前推3小时就不对了,
所以存在着问题,采用以下的方法就能很好解决

  /**
   * 当前时间向推几小时
   * @param ihour 小时
   * @return String
   */
  public static String dateRoll(int ihour) {
      DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
      //(1)获取当前时间
      LocalDateTime date = LocalDateTime.now();
      //(2)获取当前时间的前几小时时间
      LocalDateTime localDateTime = date.minusHours(ihour);

      return dateTimeFormatter.format(localDateTime);
  }

以上的代码就能很好的解决问题,要是凌晨1点向前推3小时就是前一天的23点.

原文地址:https://www.cnblogs.com/harper2/p/14165657.html