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點.