一、日期格式化, 以及字符串转换成日期
主要用到 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()));
输出为: