import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;/*** 时间计算工具类*/
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_AGO = "秒前";private static final String ONE_MINUTE_AGO = "分钟前";private static final String ONE_HOUR_AGO = "小时前";private static final String ONE_DAY_AGO = "天前";private static final String ONE_MONTH_AGO = "月前";private static final String ONE_YEAR_AGO = "年前";/*** 测试main 方法。 无实际引用** @param args String[]* @throws ParseException 解析异常*/public static void main(String[] args) throws ParseException {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:m:s");Date date = format.parse("2021-05-11 18:35:35");System.out.println(format(date));}public static String format(Date date) {long delta = new Date().getTime() - date.getTime();if (delta < ONE_MINUTE) {long seconds = toSeconds(delta);return (seconds <= 0 ? 1 : seconds) + ONE_SECOND_AGO;}if (delta < 45L * ONE_MINUTE) {long minutes = toMinutes(delta);return (minutes <= 0 ? 1 : minutes) + ONE_MINUTE_AGO;}if (delta < 24L * ONE_HOUR) {long hours = toHours(delta);return (hours <= 0 ? 1 : hours) + ONE_HOUR_AGO;}if (delta < 48L * ONE_HOUR) {return "昨天";}if (delta < 30L * ONE_DAY) {long days = toDays(delta);return (days <= 0 ? 1 : days) + ONE_DAY_AGO;}if (delta < 12L * 4L * ONE_WEEK) {long months = toMonths(delta);return (months <= 0 ? 1 : months) + ONE_MONTH_AGO;} else {long years = toYears(delta);return (years <= 0 ? 1 : years) + ONE_YEAR_AGO;}}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;}}

RelativeDateFormat时间计算工具类相关推荐

  1. java工具类-计算相对时间的工具类即两个时间的时间差

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

  2. java计算工作日_Java工作日计算工具类

    工作日计算工具类 主要功能:传入两个日期,返回这两个日期之间有多少个工作日. 思路: 预先设置好一定年份范围内的节假日.补休到map里.(这里暂时只设置了2017 - 2018年的) 将这个年份范围内 ...

  3. Java 时间间隔计算工具类

    Java 时间间隔计算工具类 一.工具类-DateIntervalUtil package com.example.demotest.util;import java.text.DecimalForm ...

  4. 计算车号Java,java停车收费计算工具类

    停车收费计算工具类.收费标准:8时至22时,停车1小时内3元,超过1小时每延长1小时加收3元:11时至12时.16时30分至17时30分,停车30分钟内收1元,超过30分收3元:晚22时至次日8时,收 ...

  5. JAVA获取N个工作日后的时间的工具类、考虑上班时间、时区

    DayWorkTime代表工作时间描述类 HolidayUtils是计算时间的工具类,addSecondByWorkDay用于计算时间加上指定秒后的工作时间,会自动跳过周末.节假日等.其中holida ...

  6. Spark计算工具类

    Vector vectors.txt 1 2.3 4.5 3 3.1 5.6 4 3.2 7.8 处理vectors.txt文件RDD[String]->RDD[Vector] package ...

  7. 非常强大的java时间处理工具类!

    xk-time 是时间转换,时间计算,时间格式化,时间解析,日历,时间cron表达式和时间NLP等的工具,使用Java8,线程安全,简单易用,多达70几种常用日期格式化模板,支持Java8时间类和Da ...

  8. Java格式化日期用斜杠_[java工具类01]__构建格式化输出日期和时间的工具类

    在之前的学习中,我写过一篇关于字符串格式化的,就主要设计到了时间以及日期的各种格式化显示的设置,其主要时通过String类的fomat()方法实现的. 我们可以通过使用不同的转换符来实现格式化显示不同 ...

  9. java jexl 工具类_jexl表达式解析、计算工具类.md

    jexl表达式解析.计算工具类.md 根据表达式可以动态反向解析出变量:适合动态表达式,参数未知场景 如 (A0.2+B0.8)/C 解析出 A\B\C,把ABC参数值代入计算 初始化引擎 priva ...

最新文章

  1. [javascript] 看知乎学习js闭包
  2. 【NLP】文本生成?还不快上知识库
  3. why I need register Apache CXF as servlet
  4. html如何自动调整边框大小,html – Chrome与大小调整:显示中的边框:表格
  5. TCP与UDP特点与区别
  6. FFmpeg的C++封装:FFmpegWrapper
  7. linux下制作codeblocks绿色版,并集成devhelp
  8. js之ActiveX控件使用说明 new ActiveXObject()
  9. oracle group by sql,Oracle SQL GROUP BY“不是GROUP BY表达式”的帮助
  10. 平板涂色(信息学奥赛一本通-T1445)
  11. typedef struct和struct区别
  12. PHP是4个进程还是五个,PHP多进程(4) :内部多进程
  13. Windows下开源截屏工具软件Free Shooter
  14. 多源异构数据库实时同步解决方案
  15. 把win10系统迁移至ssd后,开机时电脑默认不会启动ssd里面系统的问题解决方法
  16. yaml 格式错误 did not find expected key
  17. 欧拉计划(1~3)ps:以后看题一定要认真
  18. 抓取日志的小工具(命令)Adb logcat
  19. HEVC中打印CU划分
  20. 人工神经网络的数学内涵,神经网络的数学表达式

热门文章

  1. 870C. Maximum splitting
  2. linux 选择文件指定的行数据类型,06练习题
  3. 页面 接收跳转数据_【实战案例】在线教育渠道落地页数据分析
  4. ubuntu安装python_ubuntu18.04下源码编译安装最新版本Python3
  5. php对象存储hadoop存储,三个理由告诉你对象存储替换HDFS还不错
  6. mybatis plug 只查id_Mybatis一对多/多对多查询时只查出了一条数据
  7. sklearn svm 调参_SVM(Support Vector Machine)
  8. 机器学习复制粘贴笔记要点
  9. 神经网络与深度学习——TensorFlow2.0实战(笔记)(二)(安装TensorFlow2.0)
  10. turtlebot3入门教程