效果:对后来传入的日期进行处理,例子显示如下
今天 08:08:54 -----------------------当天
昨天 08:08:54------------------------ 昨天
08-20 8:08:54-----------------------当年
2014-08-20 8:08:54----------------往年
思路:
1、将字符串转为Data类型
2、判断是否是本年——>当年和往年两种情况
3、当年——>判断是否当月——>今天+昨天两种情况
当年——>其他月份
运用的java知识点:
1、String——>Data
2、Date比较
3、Date格式化输出,即Date——>String
具体实现:
public static String DATE_PATTERN = "yyyy-MM-dd HH:mm:ss";// 定义标准日期格式 used in parse
public static String DATE_PATTERN_COMMON = "MM-dd HH:mm:ss";// 定义标准日期格式 used in parse
private static String TIME_PATTERN = "HH:mm:ss";// 定义标准时间格式
public String getDateString(String dateString) {
String returnString = "";
Date date = formatString(dateString, DATE_PATTERN); //string->date
Date nowDate = new Date();//当天
if (date.getYear() == nowDate.getYear()) {//今年
if (date.getMonth() == nowDate.getMonth()) {
if (date.getDay() == nowDate.getDay()) {//当天
returnString = "今天 " + formatDate(date, TIME_PATTERN);
} else if (date.getDay() + 1 == nowDate.getDay()) {//昨天
returnString = "昨天 " + formatDate(date, TIME_PATTERN);
}
} else {//普通日期
returnString = formatDate(date, DATE_PATTERN_COMMON);
}
} else {//往年
returnString = formatDate(date, DATE_PATTERN);
}
return returnString;
}
/**
* 把一个日期,按照某种格式 格式化输出
*
* @param date 日期对象
* @param pattern 格式模型
* @return 返回字符串类型
*/
public String formatDate(Date date, String pattern) {
if (date == null) {
return null;
} else {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(date);
}
}
/**
* 将字符串类型的时间转换为Date类型
*
* @param str 时间字符串
* @param pattern 格式
* @return 返回Date类型
*/
public static Date formatString(String str, String pattern) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
Date time = null;
try {
time = sdf.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
return time;
}