格式化日期为具体的时间描述

今天遇到一个项目上的小问题,没有什么难度,但是请有意思的,就是通过日期,返回具体的事件描述,比如日期是今天,就仅仅返回时分秒;如果是昨天就返回昨天加上时分秒;如果是前天并且在本周内就返回星期几;如果是今年就返回月日时分秒,如果是往年就返回年月日时分秒。代码如下十分简单:

package Test;

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

public class DateUtil {
	
	public static int dayForWeekNum(String pTime) throws Exception {
		  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		  Calendar c = Calendar.getInstance();
		  c.setTime(format.parse(pTime));
		  int weekNum = 0;
		  if(c.get(Calendar.DAY_OF_WEEK) == 1){
			  weekNum = 7;
		  }else{
			  weekNum = c.get(Calendar.DAY_OF_WEEK) - 1;
		  }
		  return weekNum;
	 }
	
	public static String dayForWeekStr(int weekNum){
		String week = "";
		switch (weekNum) {
		  case 1:
				week = "星期一";
				break;
			case 2:
				week = "星期二";
				break;
			case 3:
				week = "星期三";
				break;
			case 4:
				week = "星期四";
				break;
			case 5:
				week = "星期五";
				break;
			case 6:
				week = "星期六";
				break;
			case 7:
				week = "星期日";
				break;
	
			default:
				break;
		}
		return week;
	}
	 
    public static String getDateStr(String dynamicTime) throws Exception { 
    	
    	SimpleDateFormat smdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    	Date dt = new Date();
    	String nowTime = smdf.format(dt);
    	String beforeTime = dynamicTime;
    	
    	String result = "";
    	
    	int today = Integer.valueOf(nowTime.substring(8, 10));
    	int beforeDay = Integer.valueOf(beforeTime.substring(8, 10));
    	
    	if(today == beforeDay){
    		//今天
    		result = beforeTime.substring(11);
    	}
    	else if((today - 1) == beforeDay){
    		//昨天
    		result = "昨天 "+beforeTime.substring(11);
    	}
    	else if((today - 1) > beforeDay && dayForWeekNum(nowTime) > dayForWeekNum(beforeTime) && dayForWeekNum(beforeTime) > 0){
    		//本周内
    		result = dayForWeekStr(dayForWeekNum(beforeTime));
    	}
    	else{
    		//本周之前,可能是今年,可能是往年
    		int thisYear = Integer.valueOf(nowTime.substring(0, 4));
    		int beforeYear = Integer.valueOf(beforeTime.substring(0, 4));
    		if(thisYear == beforeYear){
    			//今年
    			result = beforeTime.substring(5);
    		}
    		else if(thisYear > beforeDay){
    			//往年
    			result = beforeTime;
    		}
    	}
	    	
		return result; 
		
    } 
	
	 public static void main(String[] args){
		 
		 try {
			System.out.println(getDateStr("2013-06-01 00:03:14"));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 
	 }
	 
	 
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值