【Java】PrettyTime

package test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created by luan on 2015/9/15.
 */
public class PrettyTime{

    private final static long minute = 60 * 1000;// 1分钟
    private final static long hour = 60 * minute;// 1小时
    private final static long day = 24 * hour;// 1天
    private final static long month = 31 * day;// 月
    private final static long year = 12 * month;// 年

    public static void main(String[] args) throws ParseException {

        String m = "2015-09-15 09:35:01";

        System.out.printf(getTimeFormatText(m));

    }

    /**
     * 返回文字描述的日期
     * @param date
     * @return
     */
    public static String getTimeFormatText(String date) {
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        Date d;
        try {
            d = f.parse(date);
        } catch (ParseException e) {
            return date;
        }

        return getTimeFormatText(d);
    }

    /**
     * 返回文字描述的日期
     *
     * @param date
     * @return
     */
    public static String getTimeFormatText(Date date) {
        if (date == null) {
            return null;
        }
        long diff = new Date().getTime() - date.getTime();
        long r = 0;
        if (diff > year) {
            r = (diff / year);
            return r + "年前";
        }
        if (diff > month) {
            r = (diff / month);
            return r + "个月前";
        }
        if (diff > day) {
            r = (diff / day);
            return r + "天前";
        }
        if (diff > hour) {
            r = (diff / hour);
            return r + "个小时前";
        }
        if (diff > minute) {
            r = (diff / minute);
            return r + "分钟前";
        }
        return "刚刚";
    }

}

  

时间: 2024-11-05 23:33:33

【Java】PrettyTime的相关文章

【Java】Java还是.Net

网友一: 现在也跟着团队做了几个项目了,慢慢我觉得.Net无论是在语言设计.框架设计等各方面都比Java来得漂亮,是真正的后起之秀,在Studio环境下编程那是行云流水.但每次我写Java程序时,一打开Jbuilder或者Eclipse时,那慢得如牛的启动速度,极不人性化的操作就直皱眉头,可现实是,人家Java比.Net混得滋润得多,因为人家大度,人家海纳百川,所以钱财滚滚. 每次我们去谈项目的时候,金融.电信行业的用户就明确表示不用.Net,为什么?人家的服务器都是Unix的,.Net在这里连

【Java】String,StringBuffer与StringBuilder的区别??

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以

【java】Windows7 下设置环境变量

Windows 7下配置JDK环境变量參数设置: 1.    安装JDK,安装过程中能够自己定义安装文件夹等信息,比如我们选择安装文件夹为:D:\Program Files (x86)\Java\jdk1.6.0_25 2.    安装完毕后,右击"我的电脑",点击"属性",单击"高级系统设置",点击"环境变量",如图: 4.    在"系统变量"中,设置3项属性,JAVA_HOME,PATH,CLASSP

【Java】使用switch 计算一个日期是当年的第几天

计算一个日期是当年的第几天 这是去年做的一个Java题目,老师当时说这段代码里的switch用的很好. 现在工作一年了,明显感觉当时还很稚嫩,那个时候考虑问题很简单, 现在遇到问题会想更多的方面,说到这里,真的要谢谢带我的经理, 这段时间真的学到很多东西,每天都是在解决问题,每天都能学到新东西, 短短几个月时间进步了好多. 1 import java.util.Scanner; 2 3 /** 4 * 计算一个日期是当年的第几天 5 */ 6 public class CountDays { 7

【Java】代处理?代理模式 - 静态代理,动态代理

>不用代理 有时候,我希望在一些方法前后都打印一些日志,于是有了如下代码. 这是一个处理float类型加法的方法,我想在调用它前打印一下参数,调用后打印下计算结果.(至于为什么不直接用+号运算,见[Java]Float计算不准确) package com.nicchagil.study.java.demo.No09代理.No01不用代理; import java.math.BigDecimal; public class FloatCalculator { public float add(fl

【Java】利用synchronized(this)完成线程的临界区

在<[Java]线程并发.互斥与同步>(点击打开链接)中利用了操作系统通过操作信号量控制的原始方法,完成了线程的互斥与同步,说句题外话,其实这个信号量的算法,是著名的迪杰斯特拉创造的,也就是数据结构.计算机网络上面最短路径算法.迪杰斯特拉算法.Dijkstra算法的贡献人.其实Java里面根本就不需要自己定义一个信号量来实现临界区,Java对于临界区的实现早已封装好了,而且synchronized还是Java的关键字. 那么,到底怎么来使用这个关键字呢?下面就对上次<[Java]线程并发

【Java】如何访问服务器

HTTP协议---------->GET.POST.XMLHttpRequest TCP/IP协议 SOAP协议---------->Web Service Server的作用是处理HTTP请求.WebService的SOAP请求.TCP/IP请求.FTP. TCP/IP请求--------->ServerSocket.Socket  java.net包和javax.net包 java类库中的网络软件包提供了一系列的类和接口,实现网络通信功能. java.net/javax.net---

【Java】Java垃圾回收机制

Java垃圾回收机制 说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来.在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理.顾名思义,垃圾回收就是释放垃圾占用的空间,那么在Java中,什么样的对象会被认定为“垃圾”?那么当一些对象被确定为垃圾之后,采用什么样的策略来进行回收(释放空间)?在目前的商业虚拟机中,有哪些典型的垃圾收集器?下面我们就来逐一探讨这些问题.以下是本文的目录大纲: 一.如何确定某个对象

【Java】怎么回答java垃圾回收机制

(1) GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法. (2) 对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址.大小以及使用情况.通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象.通过这种方式确定哪些对象是"可达的",哪些