仿QQ消息时间显示格式

long time1=new TimeFormatTransform().datetimeToLong(“2018-3-3 22:43:25”);
Date date = new Date(time1);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int w = cal.get(Calendar.DAY_OF_WEEK);
2018-3-3 是星期六 然后w为7
2018-3-4是星期日然后w为1
2018-3-5是星期一然后w为2
然后设计如下函数(根据给出时间的long类型得出给出时间的日期)
/**
* 星期几
*
* @param time
* long 系统时间的long类型
* @return 星期一到星期日
*
* */
public static String getWeekOfDate(long time) {

    Date date = new Date(time);
    String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    int w = cal.get(Calendar.DAY_OF_WEEK);
    Log.i("w",date.toString()+w);
    if (w < 0)
        w = 0;
    return weekDays[w];
}
//仿QQ消息显示类
//超过一周显示格式如2018/03/11 22:43:25;昨天显示“昨天22:43”前天显示“前天22:43”一周内显示“星期几 22:43”


import android.util.Log;

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

/**
 * Created by 袁凯明 on 2018/3/11.
 */

public class TimeFormatTransform {
    /**
     * 根据long类型的时间戳,转换为一个String类型的描述性时间
     * 通话记录如果发生在今天:“15:30”
     * 发生在昨天:“昨天8:23”
     * 发生在前天:“前天4:56”
     * 更早:     “2016/04/15”
     *
     * @param timeStample
     * @return
     */
    //timeStample是聊天记录发生的时间
    public String getTime(long timeStample) {
        //得到现在的时间戳
        long now = System.currentTimeMillis();

        //在java中,int类型的数进行除法运算,只能的整数,正是利用这一点,
        //在下列日期中,只要没过昨天24点,无论相差了1s还是23小时,除法得到的结果都是前一天,
        int day = (int) (now / 1000 / 60 / 60 / 24 - timeStample / 1000 / 60 / 60 / 24);
        System.out.println(day);
        if (day>7) {
//            SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy:MM:dd");
            SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
            return sdf3.format(timeStample);
        }else {
            switch (day) {
                //如果是0这则说明是今天,显示时间
                case 0:
                    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
                    return sdf.format(timeStample);
                //如果是1说明是昨天,显示昨天+时间
                case 1:
                    SimpleDateFormat sdf1 = new SimpleDateFormat("HH:mm");
                    return "昨天" + sdf1.format(timeStample);
                //如果是1说明是前天,显示前天+时间
                case 2:
                    SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm");
                    return "前天" + sdf2.format(timeStample);
                //结果大于2就只显示年月日
                default:
                    SimpleDateFormat sdf3 = new SimpleDateFormat("HH:mm");
                    return getWeekOfDate(timeStample)+ sdf3.format(timeStample);
            }
        }
    }
    /***
     * 把datetime转换为long格式
     */
    public long datetimeToLong(String datetime) throws ParseException {
        Date d2;
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        d2=sdf.parse(datetime);//将String to Date类型
        System.out.println(d2);
        long t3=d2.getTime();
        System.out.println(t3);
        return t3;
    }
    /***
     * 把datetime格式的转换为特定格式的日期字符串
     *
     */
    public String getdate(String datetime) throws ParseException {
        String s;
        return s=getTime(datetimeToLong(datetime));

    }
    /**
     * 星期几
     *
     * @param time
     * long 系统时间的long类型
     * @return 星期一到星期日
     *
     * */
    public static String getWeekOfDate(long time) {

        Date date = new Date(time);
        String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int w = cal.get(Calendar.DAY_OF_WEEK)-1;
        Log.i("w",date.toString()+w);
//        if (w < 0)
//            w = 0;
        return weekDays[w];
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值