java时间自动转成今天、昨天、前天,如果是同一年刚显示月日,不同年的把年也显示

 产品提了新需求,要求把时间自动转成今天、昨天、前天,如果是同一年刚显示月日,不同年的把年也显示,磨了半天做了以下一个工具类。

 

 

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

public class Mytest {
	public static void main(String[] args) {
		String dataStr = "2014-09-01 19:47";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm",
				Locale.CHINA);
		try {
			Date ckDate = sdf.parse(dataStr);
			System.out.println("原始时间为:" + dataStr);
			System.out.println("转换后时间为:" + getTime(ckDate));
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}

	// 将传入时间与当前时间进行对比,是否今天\昨天\前天\同一年
	private static String getTime(Date date) {
		boolean sameYear = false;
		String todySDF = "HH:mm";
		String yesterDaySDF = "昨天";
		String beforYesterDaySDF = "前天";
		String otherSDF = "MM-dd";
		String otherYearSDF = "yyyy-MM-dd";
		SimpleDateFormat sfd = null;
		String time = "";
		Calendar dateCalendar = Calendar.getInstance();
		dateCalendar.setTime(date);
		Date now = new Date();
		Calendar todayCalendar = Calendar.getInstance();
		todayCalendar.setTime(now);
		todayCalendar.set(Calendar.HOUR_OF_DAY, 0);
		todayCalendar.set(Calendar.MINUTE, 0);

		if (dateCalendar.get(Calendar.YEAR) == todayCalendar.get(Calendar.YEAR)) {
			sameYear = true;
		} else {
			sameYear = false;
		}

		if (dateCalendar.after(todayCalendar)) {// 判断是不是今天
			sfd = new SimpleDateFormat(todySDF);
			time = sfd.format(date);
			return time;
		} else {
			todayCalendar.add(Calendar.DATE, -1);
			if (dateCalendar.after(todayCalendar)) {// 判断是不是昨天
			// sfd = new SimpleDateFormat(yesterDaySDF);
			// time = sfd.format(date);
				time = yesterDaySDF;
				return time;
			}
			todayCalendar.add(Calendar.DATE, -2);
			if (dateCalendar.after(todayCalendar)) {// 判断是不是前天
			// sfd = new SimpleDateFormat(beforYesterDaySDF);
			// time = sfd.format(date);
				time = beforYesterDaySDF;
				return time;
			}
		}

		if (sameYear) {
			sfd = new SimpleDateFormat(otherSDF);
			time = sfd.format(date);
		} else {
			sfd = new SimpleDateFormat(otherYearSDF);
			time = sfd.format(date);
		}

		return time;
	}
}


 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值