public class CalendarCal {
 /**
  * 与当前时间比较,得到多少年,多少月,多少天前,多少小时前,多小分钟前
  *
  * @param calendar
  *            与当前时间比较的日期值
  * @return 格式化之后的字符串
  */
 public String getDateCompareNow(Calendar calendar) {
  Calendar cal = Calendar.getInstance();
  int year = cal.get(Calendar.YEAR) - calendar.get(Calendar.YEAR);
  String strdate = null;
  if (year > 0) {
   strdate = year + "年前";
  } else if (year == 0) {
   int month = cal.get(Calendar.MONTH) - calendar.get(Calendar.MONTH);
   if (month > 0) {
    strdate = month + "月前";
   } else if (month == 0) {
    int day = cal.get(Calendar.DAY_OF_MONTH) - calendar.get(Calendar.DAY_OF_MONTH);
    if (day > 0) {
     strdate = day + "天前";
    } else if (day == 0) {
     int hour = cal.get(Calendar.HOUR_OF_DAY) - calendar.get(Calendar.HOUR_OF_DAY);
     if (hour > 0) {
      strdate = hour + "小时前";
     } else if (hour == 0) {
      int minute = cal.get(Calendar.HOUR_OF_DAY) - calendar.get(Calendar.HOUR_OF_DAY);
      if (minute > 0) {
       strdate = minute + "分钟前";
      } else if (minute == 0) {
       strdate = "刚刚";
      }
     }
     // SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); //
     // 格式化对象
     // strdate = sdf.format(calendar.getTime()); // 输出格式化的日期
     // strdate = DateUtil.dateToString(date,"HH:mm");
    }
   }
  } else {
   return "-1"; // 返回了一个负数
  }
  return strdate;
 }
 /**
  * 测试代码
  * @param args
  * @throws ParseException
  */
 public static void main(String[] args) throws ParseException{
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  Date date = sdf.parse("2013-10-02 15:53:10");
  Calendar calendar = Calendar.getInstance(); // 日历对象
  calendar.setTime(date); // 设置当前日期
  CalendarCal t = new CalendarCal();
  String strdate = t.getDateCompareNow(calendar);
  System.out.println(strdate);
 }
}

Java封装的与当前时间比较,得到多少年,多少月,多少天前,多少小时前,多小分钟前的更多相关文章

  1. 时间戳显示为多少分钟前,多少天前的JS处理,JS时间格式化,时间戳的转换

    var dateDiff = function (timestamp) { // 补全为13位 var arrTimestamp = (timestamp + '').split(''); for ( ...

  2. java Joda-Time 对日期、时间操作

    任何企业应用程序都需要处理时间问题.应用程序需要知道当前的时间点和下一个时间点,有时它们还必须计算这两个时间点之间的路径.使用 JDK 完成这项任务将非常痛苦和繁琐.现在来看看 Joda Time,一 ...

  3. 计算机程序的思维逻辑 (95) - Java 8的日期和时间API

    ​本节继续探讨Java 8的新特性,主要是介绍Java 8对日期和时间API的增强,关于日期和时间,我们在之前已经介绍过两节了,32节介绍了Java 1.8以前的日期和时间API,主要的类是Date和 ...

  4. Java编程的逻辑 (95) - Java 8的日期和时间API

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  5. Java中的日期和时间

    Java中的日期和时间 Java在java.util包中提供了Date类,这个类封装了当前的日期和时间. Date类支持两种构造函数.第一个构造函数初始化对象的当前日期和时间. Date() 下面的构 ...

  6. # 095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 03 封装总结 01 封装知识点总结

    095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  7. 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)

    094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  8. 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)

    093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  9. 092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 02 static关键字(中)

    092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

随机推荐

  1. 8.WCF简化的 AJAX(*)

    开发步骤: 添加一个Web项目,在Web项目中新建“新建项”->"Web"->"启用了AJAX的WCF服务" 页面上拖放ScriptManager控 ...

  2. python手记(31)

    #!/usr/bin/env python #-*- coding: utf-8 -*- import cv2 import numpy as np fn="test2.jpg" ...

  3. [Exchange]2个不同域之间互发邮件

    1.互相添加DNS. 不多说,构建信任域也需要这样的 2.DNS中添加Exchange的地址解析. 3.配置Exchange. 在exchange里面添加对方的exchange信息 在Receiver ...

  4. unity3d Human skin real time rendering plus 真实模拟人皮实时渲染 plus篇

    最近逃课做游戏,逃的有几门都要停考了,呵呵呵,百忙之中不忘超炒冷饭,感觉之前的人皮效果还是不够好,又改进了一些东西 首先上图 放大看细节 显而易见的比上次的效果要好很多,此次我把模型用3dmax进行了 ...

  5. VS2010 快速写入注释小技巧

    /************************************************************************//*  *//******************* ...

  6. UIColor的使用

    UIColor主要在设置各个控件的颜色的时候用得到,主要有以下几种方法创建UIColor: 1.使用RGBA创建: greenbluealpha]; 2.直接创建各个常用颜色:     [UIColo ...

  7. Bzoj 2818: Gcd 莫比乌斯,分块,欧拉函数,线性筛

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 3241  Solved: 1437[Submit][Status][Discuss ...

  8. ios socket通讯注意事项

    前段时间,在做objetive-c下的Sokcet通讯,当使用C++程序做服务端时,一切正常;当用JAVA做服务端时,双方收不到数据,在查阅了一些资料后,整理一下注意点 1 消息末尾加回车和换行符 o ...

  9. 公司开发的APP,如何生成一个二维码,供客户下载使用

    1.其实和简单,因为一般的用户使用扫一扫,大多数都是用微信自带的扫一扫工具 而,微信打开的二维码页面,会自动屏蔽apk文件,所以显然把apk的url生成一个二维码,让用户扫一扫就能直接下载,这样是行不 ...

  10. 排序算法c语言描述---堆排序

    排序算法系列学习,主要描述冒泡排序,选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等排序进行分析. 文章规划: 一.通过自己对排序算法本身的理解,对每个方法写个小测试程序.具体思路分析不 ...