时间戳,根据不同时间显示不同字符串

时间戳,根据不同时间显示不同字符串

功能:
存储物理时间,显示时间根据用户使用时的实际时间进行换算显示
物理时间内都是今天的 显示xx:xx(24时制)
物理日期内是前一天的,显示昨天
物理时间内是前两天至七天的,显示星期几
物理日期大于7天的,显示实际日期 2016.02.22格式

解决方法:
java代码如下:

package TimeFormat;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class TimeFormatFactory {
    static final int TIME_CHANGE=3600000;   //60*60*1000 用于把毫秒转换成小时
    static final int DAY_HOURS=24;          //一天24小时
    /**
     * 通过传入的时间和当前时间进行比较
     * 根据不同时间返回不同形式的字符串
     * @param date
     * @return
     */
    public static String getDateFormat(long date){
        try {
            String reString=null;       //返回的字符串    
            int dif=dateDiff(new Date(),new Date(date));//得到当前时间和输入时间相差天数

            Calendar calender=Calendar.getInstance();
            SimpleDateFormat sdf;

            if(dif==0){
                sdf=new SimpleDateFormat("HH:mm");
                reString=sdf.format(new Date(date));
                return reString;
            }
            if(dif==1){
                reString="昨天";
                return reString;
            }
            if(dif<7&&dif>0){

                calender.setTimeInMillis(date);
                int w=calender.get(Calendar.DAY_OF_WEEK);
                String str[]={"日","一","二","三","四","五","六"};
                reString="星期"+str[w-1];
                return reString;
            }

            sdf=new SimpleDateFormat("yyyy.MM.dd");
            reString=sdf.format(new Date(date));
            return reString;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }


    }
    /**
     * 比较两个时间相差几天
     * @param date1 被比较时间
     * @param date2 比较时间
     * @return
     */
    public static int dateDiff(Date date1, Date date2) {
            Calendar cal1 = Calendar.getInstance();
            Calendar cal2 = Calendar.getInstance();
            cal1.setTime(date1);
            cal2.setTime(date2);
            long ldate1 = date1.getTime() + cal1.get(Calendar.ZONE_OFFSET) + cal1.get(Calendar.DST_OFFSET);
            long ldate2 = date2.getTime() + cal2.get(Calendar.ZONE_OFFSET) + cal2.get(Calendar.DST_OFFSET);

            int hr1 = (int) (ldate1 / TIME_CHANGE); // 60*60*1000
            int hr2 = (int) (ldate2 / TIME_CHANGE);

            int days1 = hr1 / DAY_HOURS;
            int days2 = hr2 / DAY_HOURS;

            int dateDiff = days1 - days2;
            return dateDiff;
        }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值