• 如何将时间改为显示:几天前,几小时前,或者几分钟前


    http://www.oschina.net/question/657074_89320#tags_nav

    如何将时间改为显示:几天前,几小时前,或者几分钟前  

    如这样的  最后发帖:2011-01-05 12:33 
    要改成这样怎么实现: 
    最后发表:  2分钟前 
    最后发表:  28秒前 
    最后发表:  2025-04-18   
    最后发表:  2小时前   

    最后发表: 2天前 

    解答:

    创建时间-当前时间

    如果在60秒之内显示多少秒之前,

    如果大于60秒在60分之内,显示多少分

    ……以此类推

    timemap加减

    个人做法是保存时间戳,然后在前端用jq插件做转换,比如 smart-time-ago

    有一个后台方法专门转换的。

    时间格式化类库 PrettyTime 

    官方说支持超过25种语言,可用设置语言,默认是读取系统语言设置

    OSC应该是用的前端做的,去年@红薯 有分享出来这个日期JQ插件

    osc android手机端里开源代码就有

    private final static ThreadLocal<SimpleDateFormat> dateFormater2 = new ThreadLocal<SimpleDateFormat>() {
            @Override
            protected SimpleDateFormat initialValue() {
                return new SimpleDateFormat("yyyy-MM-dd");
            }
        };
    /**
         * 以友好的方式显示时间
         * @param sdate
         * @return
         */
        public static String friendly_time(String sdate) {
            Date time = toDate(sdate);
            if(time == null) {
                return "Unknown";
            }
            String ftime = "";
            Calendar cal = Calendar.getInstance();
             
            //判断是否是同一天
            String curDate = dateFormater2.get().format(cal.getTime());
            String paramDate = dateFormater2.get().format(time);
            if(curDate.equals(paramDate)){
                int hour = (int)((cal.getTimeInMillis() - time.getTime())/3600000);
                if(hour == 0)
                    ftime = Math.max((cal.getTimeInMillis() - time.getTime()) / 60000,1)+"分钟前";
                else
                    ftime = hour+"小时前";
                return ftime;
            }
             
            long lt = time.getTime()/86400000;
            long ct = cal.getTimeInMillis()/86400000;
            int days = (int)(ct - lt);      
            if(days == 0){
                int hour = (int)((cal.getTimeInMillis() - time.getTime())/3600000);
                if(hour == 0)
                    ftime = Math.max((cal.getTimeInMillis() - time.getTime()) / 60000,1)+"分钟前";
                else
                    ftime = hour+"小时前";
            }
            else if(days == 1){
                ftime = "昨天";
            }
            else if(days == 2){
                ftime = "前天";
            }
            else if(days > 2 && days <= 10){ 
                ftime = days+"天前";          
            }
            else if(days > 10){          
                ftime = dateFormater2.get().format(time);
            }
            return ftime;
        }
     
    /**
         * 将字符串转位日期类型
         * @param sdate
         * @return
         */
        public static Date toDate(String sdate) {
            try {
                return dateFormater.get().parse(sdate);
            } catch (ParseException e) {
                return null;
            }
        }
  • 相关阅读:
    Java IO流 简介
    Centos8安装java部署环境
    RedisTemplate
    手把手教windows上安装linux虚拟机及环境配置
    使用Swagger2构建 RESTful API文档
    VMware 安装 Centos 7 虚拟机配置网络
    别再写满屏的 try catch 了
    isEmpty 和 isBlank 的用法区别
    SpringBoot 中必须掌握的45个注解
    数组的栈方法
  • 原文地址:https://www.cnblogs.com/kenshinobiy/p/5377305.html
Copyright © 2020-2023  润新知