仿微信时间转换工具类,昨天、周几等

本文介绍了一种仿照微信消息时间显示格式的Java实现方法,通过Calendar和SimpleDateFormat类进行日期时间的格式化,能够根据不同时间间隔显示为昨天、具体星期几或完整日期时间格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

仿微信时间转换工具类,昨天、周几等

格式要求如下:

15:55
昨天 15:55
星期三 15:55
星期二 15:55
星期一 15:55
星期日 15:55
星期六 15:55
2019-01-04 15:55:36
2019-01-03 15:55:36
2019-01-02 15:55:36

代码

package com.skychion;

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

/**
 * @author skychion
 * <仿微信日期转换方法>
 * 运行结果:
 * 15:55
 * 昨天 15:55
 * 星期三 15:55
 * 星期二 15:55
 * 星期一 15:55
 * 星期日 15:55
 * 星期六 15:55
 * 2019-01-04 15:55:36
 * 2019-01-03 15:55:36
 * 2019-01-02 15:55:36
 */
public class TimeSwitch {

    public static void main(String[] args) {
        String pattern = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());

        for(int i = 0;i < 10;i++){
            switchTime(sdf.format(calendar.getTime()),pattern);
            calendar.add(Calendar.DATE, -1);
        }
    }

    private static void switchTime(String timeStr,String pattern){
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        try {
            Calendar paramCalendar = Calendar.getInstance();
            paramCalendar.setTime(sdf.parse(timeStr));

            //今天 00:00:00 的时间
            Date today = format.parse(format.format(new Date()));
            long dif = today.getTime() - paramCalendar.getTimeInMillis();

            if(dif > 0 && (dif <= 1000*3600*24) ){
                System.out.println("昨天 " + paramCalendar.get(Calendar.HOUR_OF_DAY) + ":"+
                        (paramCalendar.get(Calendar.MINUTE)>9?paramCalendar.get(Calendar.MINUTE):"0"+paramCalendar.get(Calendar.MINUTE)));
            }else if(dif <= 0){
                System.out.println(paramCalendar.get(Calendar.HOUR_OF_DAY) + ":"+
                        (paramCalendar.get(Calendar.MINUTE)>9?paramCalendar.get(Calendar.MINUTE):"0"+paramCalendar.get(Calendar.MINUTE)));
            }else if(dif > 1000*3600*24 && dif <= 1000*3600*24*6){
                int paramWeek = paramCalendar.get(Calendar.DAY_OF_WEEK);
                switch (paramWeek){
                    case 1 :
                        System.out.println("星期日 "+
                                paramCalendar.get(Calendar.HOUR_OF_DAY) + ":"+
                                (paramCalendar.get(Calendar.MINUTE)>9?paramCalendar.get(Calendar.MINUTE):"0"+paramCalendar.get(Calendar.MINUTE)));
                        break;
                    case 2 :
                        System.out.println("星期一 "+
                                paramCalendar.get(Calendar.HOUR_OF_DAY) + ":"+
                                (paramCalendar.get(Calendar.MINUTE)>9?paramCalendar.get(Calendar.MINUTE):"0"+paramCalendar.get(Calendar.MINUTE)));
                        break;
                    case 3 :
                        System.out.println("星期二 "+
                                paramCalendar.get(Calendar.HOUR_OF_DAY) + ":"+
                                (paramCalendar.get(Calendar.MINUTE)>9?paramCalendar.get(Calendar.MINUTE):"0"+paramCalendar.get(Calendar.MINUTE)));
                        break;
                    case 4 :
                        System.out.println("星期三 "+
                                paramCalendar.get(Calendar.HOUR_OF_DAY) + ":"+
                                (paramCalendar.get(Calendar.MINUTE)>9?paramCalendar.get(Calendar.MINUTE):"0"+paramCalendar.get(Calendar.MINUTE)));
                        break;
                    case 5 :
                        System.out.println("星期四 "+
                                paramCalendar.get(Calendar.HOUR_OF_DAY) + ":"+
                                (paramCalendar.get(Calendar.MINUTE)>9?paramCalendar.get(Calendar.MINUTE):"0"+paramCalendar.get(Calendar.MINUTE)));
                        break;
                    case 6 :
                        System.out.println("星期五 "+
                                paramCalendar.get(Calendar.HOUR_OF_DAY) + ":"+
                                (paramCalendar.get(Calendar.MINUTE)>9?paramCalendar.get(Calendar.MINUTE):"0"+paramCalendar.get(Calendar.MINUTE)));
                        break;
                    case 7 :
                        System.out.println("星期六 "+
                                paramCalendar.get(Calendar.HOUR_OF_DAY) + ":"+
                                (paramCalendar.get(Calendar.MINUTE)>9?paramCalendar.get(Calendar.MINUTE):"0"+paramCalendar.get(Calendar.MINUTE)));
                        break;
                }
            }else{
                System.out.println(timeStr);
            }

        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值