如何计算时间的前一个小时?

字符串 String str = "2012-10-18 23:59:59";

如何得出当前时间的前一个小时呢?2012-10-18 22:59:59

public static Date parse(String stringValue, String formatPattern) {
SimpleDateFormat format = new SimpleDateFormat(formatPattern);
try {
return format.parse(stringValue);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}

public static void main(String[] args) throws Exception {
String dateStr = "2012-10-18 23:59:59";
long hourTime = 60*60*1000;
Date date = parse(dateStr, FORMAT_DATE_YYYY_MM_DD_HH_MM_SS);
Date d = new Date(date.getTime() - hourTime);
System.out.println(format(d, FORMAT_DATE_YYYY_MM_DD_HH_MM_SS));
}

将字符串时间转换成UTC时间,得到类似 1357845892 这个时间.秒数

然后减去3600秒后再转换成字串

apache common-langs 工具包有个 DateUtils

Date before = DateUtils.addHour(now, -1);

[code="java"]
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));

    String timeStr = "2012-10-18 23:59:59";
    Date time = stringToDate(timeStr);
    cal.setTime(time);
    System.out.println(cal.getTime().toLocaleString());
    cal.add(Calendar.HOUR_OF_DAY, -1);
    System.out.println(cal.getTime().toLocaleString());

[/code]

[code="java"]
public static Date stringToDate(String timeStr){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    Date date = null;
    try {
        date = sdf.parse(timeStr);
    } catch (ParseException e) {
        System.out.println(e.getMessage());
    }
    return date;
}

[/code]

Calendar startTime = Calendar.getInstance();

startTime.set(Calendar.HOUR_OF_DAY, startTime.get(Calendar.HOUR_OF_DAY)-1);