解析新浪微博中的时间,达到返回值对应的时间

package DATE;

import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * 格式 String s = "Thu Aug 16 09:46:53 +0800 2012";
 * 
 * @author zeng
 */
public class TimeUtil {
	private static final String[] mE = { "Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sep",
			"Oct", "Nov", "Dec" };
	private static final String[] mC = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11" };
	private static Calendar calendar = Calendar.getInstance();
	private static SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm");

	/**
	 * 
	 * @param s
	 *            "Thu Aug 16 09:46:53 +0800 2012"
	 * @return 1年前 or 08-15 10:50 or 几小时前 or 几分钟前 or 几秒前, otherwise ""
	 */
	public static String parseTime(String s) {
		String[] split = s.split(" ");
		String month = monthUtil(split[1]);
		calendar.set(Calendar.YEAR, Integer.valueOf(split[5]));
		calendar.set(Calendar.MONTH, Integer.valueOf(month));
		calendar.set(Calendar.DAY_OF_MONTH, Integer.valueOf(split[2]));
		String[] hourSplit = split[3].split(":");
		calendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(hourSplit[0]));
		calendar.set(Calendar.MINUTE, Integer.valueOf(hourSplit[1]));
		calendar.set(Calendar.SECOND, Integer.valueOf(hourSplit[2]));
		Calendar currentCalendar = Calendar.getInstance();
		if (calendar.get(calendar.YEAR) < currentCalendar.get(currentCalendar.YEAR))
			return currentCalendar.get(currentCalendar.YEAR) - calendar.get(calendar.YEAR) + "年前";
		if (currentCalendar.get(currentCalendar.MONTH) - calendar.get(calendar.MONTH) > 0) 
			return sdf.format(calendar.getTimeInMillis());
		if (currentCalendar.get(currentCalendar.DAY_OF_MONTH) - calendar.get(calendar.DAY_OF_MONTH) > 0)
			return sdf.format(calendar.getTimeInMillis());
		if (currentCalendar.get(currentCalendar.HOUR_OF_DAY) - calendar.get(calendar.HOUR_OF_DAY) > 0)
			return currentCalendar.get(currentCalendar.HOUR_OF_DAY) - calendar.get(calendar.HOUR_OF_DAY) + "小时前";
		if (currentCalendar.get(currentCalendar.MINUTE) - calendar.get(calendar.MINUTE) > 0)
			return currentCalendar.get(currentCalendar.MINUTE) - calendar.get(calendar.MINUTE) + "分钟前";
		if (currentCalendar.get(currentCalendar.SECOND) - calendar.get(calendar.SECOND) > 0)
			return currentCalendar.get(currentCalendar.SECOND) - calendar.get(calendar.SECOND) + "秒前";
		return "";
	}

	private static String monthUtil(String m) {
		for (int i = 0; i < mE.length; i++) {
			if (mE[i].equalsIgnoreCase(m))
				return mC[i];
		}
		return "";//这个若返回""会报错,没处理
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值