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

简介: http://www.oschina.net/question/657074_89320#tags_nav   如何将时间改为显示:几天前,几小时前,或者几分钟前  如这样的  最后发帖:2011-01-05 12:33 要改成这样怎么实现: 最后发表:  2分钟前 最后发表:  28秒前 最后...

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

 

如何联系我:【万里虎】www.bravetiger.cn 【QQ】3396726884 (咨询问题100元起,帮助解决问题500元起) 【博客】http://www.cnblogs.com/kenshinobiy/
目录
相关文章
|
7月前
|
JavaScript
js计算时间为刚刚、几分钟前、几小时前、几天前··
js计算时间为刚刚、几分钟前、几小时前、几天前··
|
3月前
|
Shell Linux
10-20|修改当前时间
10-20|修改当前时间
|
4月前
|
监控 编译器 C++
【代码讲解】【C/C++】获取文件最后修改的时间(系统时间)
【代码讲解】【C/C++】获取文件最后修改的时间(系统时间)
133 0
|
7月前
王者荣耀派出小兵时间__指定的时间执行指定的任务
王者荣耀派出小兵时间__指定的时间执行指定的任务
52 0
java 计算两个时间间隔几天几小时几分钟几秒
计算两个时间间隔几年几月几天几小时几分钟几秒
java 计算两个时间间隔几天几小时几分钟几秒
|
测试技术 容器
将系统运行时长的秒数汉化成几天几时几分几秒
将系统运行时长的秒数汉化成几天几时几分几秒
108 0
上次更新时间配置
上次更新时间配置
118 0
|
Java 数据库
在程序里面,时间真的发生了343秒的倒流。(上)
在程序里面,时间真的发生了343秒的倒流。(上)
204 0
在程序里面,时间真的发生了343秒的倒流。(上)
|
Java
在程序里面,时间真的发生了344秒的倒流。(中)
在程序里面,时间真的发生了344秒的倒流。(中)
128 0
在程序里面,时间真的发生了344秒的倒流。(中)
|
Java 数据库
在程序里面,时间真的发生了345秒的倒流。(下)
在程序里面,时间真的发生了345秒的倒流。(下)
133 0
在程序里面,时间真的发生了345秒的倒流。(下)