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

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;
        }
    }
时间: 2024-08-01 03:43:34

如何将时间改为显示:几天前,几小时前,或者几分钟前的相关文章

时间日期类--显示时间

<HTML> <HEAD> <TITLE>时间日期篇--显示日期</TITLE> </HEAD> <BODY bgcolor="#fef4d2" background="../images/background3.JPG" > <br> <br> <center> <font color="ffaafa">   <h2&g

php 显示某一个时间相当于当前时间在多少秒前,多少分钟前,多少小时前

/* *function:显示某一个时间相当于当前时间在多少秒前,多少分钟前,多少小时前 *timeInt:unix time时间戳 *format:时间显示格式 */ public function timeFormat($timeInt,$format='Y-m-d H:i:s'){ if(empty($timeInt)||!is_numeric($timeInt)||!$timeInt){ return ''; } $d=time()-$timeInt; if($d<0){ return

Entity Framework 6 学习笔记2 — 增、删、改、显示简单代码示例

前言 通过 “Entity Framework 6 学习笔记1 — 介绍和安装方法”文章我相信大家对EF的安装应该没什么问题了,整体安装还是比较简单的,只需要通过Nuge搜索EF然后安装就可以了,这也体现了微软一贯原则–“简单”. 安装完了我想很多朋友也着急想体验下EF的好处了吧,今天我就通过EF框架对增.删.改操作做一个简单示例. 创建表 这里我只是做示例所以就创建了一个表并且字段也很少.下面是sql语句,大家可以直接复制生成表结构.   CREATE TABLE Book   (   Id

Echarts的柱状统计图出现x轴统计时间出现间隔显示的问题

今天在使用Echarts的柱状统计图出现x轴统计时间出现间隔显示的问题: 数据都拿到了,放到Json数组都是完整的, 展现是时候 如下图: ------------------------------------------------------jsp页面代码 的div <div class="f-r w-b45">                <div id="proMonthCount" style="min-width: 310

php根据时间显示刚刚,几分钟前,几小时前的实现代码

<?php /** * php<a href="http://www.jbxue.com/zt/shijianzhuanhuan/" target="_blank" class="infotextkey">时间转换</a> * edit by www.jbxue.com */ date_default_timezone_set('PRC'); $date = "1351836000"; echo

使用C#把发表的时间改为几年前,几个月,几天前,几小时前,几分钟前,或几秒前

我们在评论中往往会看到多少天前,多少小时前. 实现原理:现在时间-过去时间 得到的时间差来做比较 下面我定义了一个Helper类,大家直接引用即可,参数就是时间差,注意时间差类型是TimeSpan类型,而不是DateTime类型哦~ TimeHelper.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 时间测试 { /// <summary> /

js 显示友好的时间格式【刚刚、几分钟前、几小时、几天前、几周前、几月前等等 时间格式化】(工具类)

/** * 毫秒转换友好的显示格式 * 输出格式:21小时前 * stringTime为:年-月-日 时:分:秒 * @param {[type]} time [description] * @return {[type]} [description] */function friendlyFormatTime(stringTime) { let minute = 1000 * 60; let hour = minute * 60; let day = hour * 24; let week =

dedecms发布文章时间显示多少分钟前

/**文章发布多少时间前*/function tranTime($time) { $rtime = date("m-d H:i",$time); $htime = date("H:i",$time); $time = time() - $time; if ($time < 60) { $str = '刚刚'; } elseif ($time < 60 * 60) { $min = floor($time/60); $str = $min.'分钟前'; }

long类型的时间转为n秒前n分钟前n小时前或者日期

1 package com.tai.use; 2 3 import java.text.DateFormat; 4 import java.text.SimpleDateFormat; 5 import java.util.Calendar; 6 import java.util.Date; 7 8 public class GuiYI 9 { 10 /** 11 * GuiYI 诡异的需求 12 * 转为 n秒前 n分钟前 n小时前 日期 13 * @param time 14 * @para