zoukankan      html  css  js  c++  java
  • 如何将时间改为显示:几天前,几小时前,或者几分钟前

    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;
            }
        }
  • 相关阅读:
    第十章 泛型程序设计与C++标准模板库 迭代器
    Linux 命令
    Linux 命令
    Linux 命令
    Linux 命令
    Linux 命令
    Linux 命令
    Linux 命令
    Linux 命令
    Linux 命令
  • 原文地址:https://www.cnblogs.com/kenshinobiy/p/5377305.html
Copyright © 2011-2022 走看看