java相对时间的工具类,此类中有两个暴露的方法,相对于当前时间的方法和相对于某时间的方法。
返回String,如:2小时前/3天2时13秒/昨天
具体请运行查看

(DateTimeFormatUtil.getStrDate(date, form);为将毫秒数转换为格式化日期的方法,自己编写)

package com.warmdoctor.service.util;import java.util.Date;/***  Copyright   2016    CoderDream's Eclipse* *  All right reserved.*  *  Created on 2016年8月5日 下午5:20:32*  *  Update on 2016年8月10日 下午2:18:29* *  @author xiaoming*  *  @mail sgyingyin@sina.com* *  @tags An overview of this file: 相对时间转换* */
public class RelativeDateFormat {private static final long ONE_MINUTE = 60000L;private static final long ONE_HOUR = 3600000L;private static final long ONE_DAY = 86400000L;private static final long ONE_WEEK = 604800000L;private static final String ONE_SECOND_CN = "秒";private static final String ONE_MINUTE_CN = "分钟";private static final String ONE_HOUR_CN = "小时";private static final String ONE_DAY_CN = "天";private static final String ONE_MONTH_CN = "月";private static final String ONE_YEAR_CN = "年";private static final String ONE_AGO = "前";/*** @author xiaoming 2016年8月5日* @describe    相对于当前时间* @param date* @return* @returnType String*/public static String format(Date date) {if(date == null)date = new Date();long delta = new Date().getTime() - date.getTime();if (delta < 1L * ONE_MINUTE) {long seconds = toSeconds(delta);return (seconds <= 0 ? 1 : seconds) + ONE_SECOND_CN + ONE_AGO;}if (delta < 45L * ONE_MINUTE) {long minutes = toMinutes(delta);return (minutes <= 0 ? 1 : minutes) + ONE_MINUTE_CN + ONE_AGO;}if (delta < 24L * ONE_HOUR) {long hours = toHours(delta);return (hours <= 0 ? 1 : hours) + ONE_HOUR_CN + ONE_AGO;}if (delta < 48L * ONE_HOUR) {return "昨天";}if (delta < 30L * ONE_DAY) {long days = toDays(delta);return (days <= 0 ? 1 : days) + ONE_DAY_CN + ONE_AGO;}if (delta < 12L * 4L * ONE_WEEK) {long months = toMonths(delta);return (months <= 0 ? 1 : months) + ONE_MONTH_CN + ONE_AGO;} else {long years = toYears(delta);return (years <= 0 ? 1 : years) + ONE_YEAR_CN + ONE_AGO;}}/*** @author xiaoming 2016年8月5日* @describe    相对于某个时间, 计算时间差* @param date* @param ofDate 最后时间* @return* @returnType String*/public static String formatOfDate(Date date, Date ofDate) {if(date == null)date = new Date();if(ofDate == null)ofDate = new Date();long delta = ofDate.getTime() - date.getTime();delta = Math.abs(delta);long s = toSeconds(delta);long min = toMinutes(delta);long hour = toHours(delta);long day = toDays(delta);long month = toMonths(delta);long year = toYears(delta);if(year > 0)return DateTimeFormatUtil.getStrDate(delta, "yyyy年MM月dd天HH时mm分ss秒");if(month > 0)return DateTimeFormatUtil.getStrDate(delta, "MM月dd天HH时mm分ss秒");if(day > 0)return DateTimeFormatUtil.getStrDate(delta, "dd天HH时mm分ss秒");if(hour > 0)return DateTimeFormatUtil.getStrDate(delta, "HH时mm分ss秒");if(min > 0)return DateTimeFormatUtil.getStrDate(delta, "mm分ss秒");return s + ONE_SECOND_CN;}private static long toSeconds(long date) {return date / 1000L;}private static long toMinutes(long date) {return toSeconds(date) / 60L;}private static long toHours(long date) {return toMinutes(date) / 60L;}private static long toDays(long date) {return toHours(date) / 24L;}private static long toMonths(long date) {return toDays(date) / 30L;}private static long toYears(long date) {return toMonths(date) / 365L;}
}

java工具类-计算相对时间的工具类即两个时间的时间差相关推荐

  1. linux系统时间代表,Linux上有两种时间,一种是硬件时间,一种是系统时间

    date 系统时间 clock/hwclock  硬件时钟 cal  日历 date 打印或设置系统日期或时间,以给定格式显示或设置系统时间 +%a显示周 +%A          完整显示周 +%b ...

  2. java如何计算时间天数差,java计算两个时间相差天数的方法汇总

    问题描述: 输入:两个日期 输出:两个日期相差的天数 具体代码实现 方法1: 通过calendar类的日期比较.注意:这里需要考虑一下: 日期是跨年份的,如一个是2012年,一个是2015年的 年份是 ...

  3. java计算两个时间相差天数的方法

    方法1: 通过Calendar类的日期比较.注意:这里需要考虑一下: 日期是跨年份的,如一个是2012年,一个是2015年的 年份是分闰年和平年的,各自的天数不同 /**  * date2比date1 ...

  4. java判断总共天数_java判断两个时间相差得天数

    方法一:通过Calendar类得日期比较,在这需要考虑闰年和平年,也要考虑跨年份 /** * date2比date1多的天数 * @param date1 * @param date2 * @retu ...

  5. java判断总共天数_java 判断两个时间相差的天数

    1.实现目标 输入:两个日期 输出:两个日期相差的天数 2.代码实现 方法1: 通过Calendar类的日期比较.注意:这里需要考虑一下: 日期是跨年份的,如一个是2012年,一个是2015年的 年份 ...

  6. js获取传统节假日_js 两个时间之间工作日的计算问题(包含节假日)

    后端用vue写点前端代码,也是罪过...嗷嗷嗷  行吧 项目需求描述:需要对时间控件里面的两个时间计算出相隔多少个工作日(包含节假日),由于节假日每年都不确定.保证项目能够正常使用,录用了2018年和 ...

  7. 计算两个时间中的每个月的月初和月末

    计算两个时间中的每个月的月初和月末 场景 中文描述 计算两个时间中的每个月的月初和月末 代码示例 计算指定月份的月初和月末 //计算指定月份的月初和月末 private function _getCt ...

  8. Java比较两个时间大小

    最近项目上有个业务逻辑是比对两个时间大小,不过这两个时间是只比对时分秒的(比如:五点十三分十四秒5:13:14)针对这种我们可以直接给时间写死拼接一个年月日就可以直接使用日期的date1.compar ...

  9. vue - 比较两个日期大小、比较同一天两个时间大小(判断两个日期时间的大小)JS 解决方法

    介绍 vue项目中,可能需要对比两个日期时间的大小,如下代码所示: 2018-8-12 12:30 | 2018-8-12 02:30 它们谁大? 比较两个日期大小 方法一: //比较两个日期大小.格 ...

  10. python读取前两列数据对比_使用Python的Dataframe取两列时间值相差一年的所有行方法...

    在使用Python处理数据时,经常需要对数据筛选. 这是在对时间筛选时,判断两列时间是否相差一年,如果是,则返回符合条件的所有列. data原始数据: data[map(lambda x:dateti ...

最新文章

  1. Kruskal算法模版
  2. 零基础学python视频百度云-零基础入门学习Python 小甲鱼视频教程
  3. 被遗忘的Logrotate
  4. Sklearn中的CV与KFold详解
  5. 游戏开发者需要注意的4个内存使用问题
  6. @valid 校验_SpringBoot数据校验与优雅处理详解
  7. 3结构介绍_豹驰(BOACH)声学材料吸隔声方法介绍—(下)材料隔声特性曲线
  8. 七、matplotlib的使用
  9. android 滚动画画,Android利用ViewPager实现可滑动放大缩小画廊效果
  10. 山东大学 2020级数据库系统 实验四
  11. [转]PDF在线阅读开发经验(FlexPaper+SWFTools+SaveAsPDFandXPS)
  12. 让MDK5开发51单片机
  13. FPGA 编程三大范例
  14. mysql根据用户经纬度查询附近商家,mysql根据经纬度获取附近的商家
  15. 大量带BPM的跑步歌曲/跑步音乐下载
  16. Android通用适配器CommonAdapter
  17. openpyxl中遇到TypeError: ‘generator‘ object is not subscriptable的问题和解决方案
  18. Linux I2C 核心、总线、与设备驱动
  19. UE4动画重定向与动画蒙太奇(播放动画)
  20. Debug Diagnostic Tool

热门文章

  1. 看完你不笑证明你不是真的程序员
  2. Git命令的使用记录及常见的错误解决方式
  3. IG夺冠!王思聪都这么努力,你还不了解下QbaoNetwork吗?
  4. RNAseq理论基础
  5. 【基础算法】差分的应用(一维差分和二维差分)
  6. Web播放器flash播放器Flowplayer免费播放器
  7. Button 的 进化之旅 | 我们是如何设计 Compose API 的 (下篇)
  8. 简单3D翻页相册制作教程
  9. DS18B20读取温度,序号匹配
  10. U盘盘符不能显示的解决过程