码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-04-11 11:46:38      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:

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;
        }
    }

 

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

标签:

原文地址:http://www.cnblogs.com/kenshinobiy/p/5377305.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!