一、日期格式化, 以及字符串转换成日期
  主要用到 SimpleDateFormat 类实现日期的格式化,以及日期字符串的解析。
  示例:
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  // 格式化
  String sDate = sdf.format(new Date());
  System.out.println(sDate);
  // 日期字符串解析
  String str = "2016-05-24 12:20:12";
  try {
  Date date = sdf.parse(str);
  System.out.println(sdf.format(date));
  } catch (ParseException e) {
  e.printStackTrace();
  }
  输出为:

  二、 几天前, 几小时前
  主要用到 Calendar 类的 getTimeInMillis 方法。
  示例:
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String str = "2016-05-23 12:20:12";
  try {
  // 解析日期字符串
  Date date = sdf.parse(str);
  Calendar oldCal = Calendar.getInstance();
  // 设置日期
  oldCal.setTime(date);
  // 获取当前日期
  Calendar curCal = Calendar.getInstance();
  long val = curCal.getTimeInMillis() - oldCal.getTimeInMillis();
  // 输出 几天前
  System.out.println(val/(1000 * 60 * 60 * 24) + " 天前");
  // 输出 几小时前
  System.out.println(val/(1000 * 60 * 60) + " 小时前");
  } catch (ParseException e) {
  e.printStackTrace();
  }
  输出为:

  三、计算几天, 几小时之前(或者之后)的日期
  主要用到 Calendar 类的 add 方法。
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String str = "2016-05-23 12:20:12";
  // 获取当前日期
  Calendar curCal = Calendar.getInstance();
  // 输出当前日期
  System.out.println("日期基数: " + sdf.format(curCal.getTime()));
  // 设置并输出 2小时后的日期
  curCal.add(Calendar.HOUR_OF_DAY, 2);
  System.out.println("2小时后: " + sdf.format(curCal.getTime()));
  // 设置并输出 1天后的日期
  curCal.add(Calendar.DAY_OF_MONTH, 1);
  System.out.println("1天后: " + sdf.format(curCal.getTime()));
  // 设置并输出 2小时前的日期
  curCal.add(Calendar.HOUR_OF_DAY, -2);
  System.out.println("2小时前: " + sdf.format(curCal.getTime()));
  输出为: